home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Mac Power 1997 November
/
MACPOWER-1997-11.ISO.7z
/
MACPOWER-1997-11.ISO
/
AMUG
/
MUSIC
/
bol-processor-271-appl.sit
/
bol-processor-271-appl
/
BP2 help
< prev
next >
Wrap
Text File
|
1997-06-15
|
134KB
|
2,418 lines
// This is the help file for Bol Processor BP2.7, which is accessed "on-line".
// When editing it, beware that BP2 looks for prefixes, hence if an item is
// the prefix of another item then it should precede it in this file.
### Help
・ To access on-line help, type cmd-? or select "Help" in the "Action" menu.
The cursor becomes a question mark. Select a menu command, click a button or
select any word or group of words you need information about.
・ In the "Help" text, expressions between quotes are hyperlinks to more entries.
### BP2 help
The information you are reading now is taken from a text file called "BP2 help".
### Hypertext (HTML)
HTML (HyperText Markup Language) is a universal text format for electronic documents.
Documents in HTML format can be read by ヤWeb browsersユ such as Mosaic or Netscape Navigator.
Use this format for exchanging BP2 text files via the Internet or multiplatform supports
like CD-ROMs.
BP2 automatically identifies and converts HTML files. If a window (grammar, alphabet, script, etc.)
contains text loaded from a HTML file, it will be saved in the same format unless its name is
changed and a different format is selected by the user. (See "BP2 file format").
BP2 identifies the file as a HTML one after finding:
・ flag "<HTML>" or "<html>";
・ a flag "</ノ>" where "ノ" is a non-empty string of alphabetic chars;
・ a token "&ノ;" where "ノ" is a non-empty string of alphabetic chars;
・ a token "ノ;" where "ノ" is a non-empty string of 1 to 3 digits.
Conversion from HTML to BP2 removes all <> </> flags and translates tokens "&ノ;" to
the Macintosh character set. Unknown characters are replaced with ヤ・ユ.
Conversion is suspended if a "</html>" flag is encountered. It is resumed with "<html>".
When converting text to HTML format, BP2 converts high-ASCII characters and a few
punctuation signs (as per the HTML 3.0 specification) to HTML tokens. The conversion is
consistent with the widely accepted mapping between Macintosh characters and ISO 8859-1
(Latin-1 code).
Character ヤノユ (used for "Undetermined rests") is converted to "_rest".
HTML files are sliced to approximately 80 character paragraphs terminated with CR and LF, which
makes them compatible with DOS/Windows.
### Types-creators
・ The following are the prefixes, file types and creators of Macintosh files handled by BP2.
Prefix type creator description
-da TEXT Bel0 Bol Processor BP2 data
-kb BP02 Bel0 Bol Processor BP2 "keyboard"
-mi BP03 Bel0 Bol Processor BP2 "sound-object prototypes"
<none> BP04 Bel0 Bol Processor BP2 decisions
-gr BP05 Bel0 Bol Processor BP2 grammar
-ho BP06 Bel0 Bol Processor BP2 alphabet
-da BP07 Bel0 Bol Processor BP2 data (old versions)
-in BP08 Bel0 Bol Processor BP2 interaction
-se BP09 Bel0 Bol Processor BP2 settings
-wg BP10 Bel0 Bol Processor BP2 weights
+sc BP11 Bel0 Bol Processor BP2 script
-gl BP12 Bel0 Bol Processor BP2 glossary
-tb BP13 Bel0 Bol Processor BP2 time base
-cs BP14 Bel0 Bol Processor BP2 "Csound instrument file"
<none> Midi ???? MIDI file type 0, 1 or 2
・ All text files may also be stored in "Hypertext (HTML)" format with signature 'MOSS'.
### BP2 file formats
When saving a file for the first time or after changing its name, the user is given four format
options:
・ Normal BP2 file (signature 'Bel0', file type depending on type of data (see "Types-creators");
・ Pure text (signature 'Bel0', file type 'TEXT');
・ HTML text (signature 'MOSS', file type 'TEXT');
・ HTML BP2 (signature 'MOSS', file type depending on type of data (see "Types-creators");
Signature 'Bel0' (registered with Apple) identifies BP2. Clicking such files will automatically
launch BP2.
Signature 'MOSS' makes the file directly compatible with Netscape Navigator.
Use HTML BP2 if the file should be reused by BP2 while being readable by Web browsers.
Use HTML text if the file should be in pure text format (for instance it needs to be inserted
in an electronic mail message).
・ Pure text files can also be opened by BP2: select ヤOpenユ from the ヤFileユ menu with the
ヤoptionユ key down.
・ Csound scores are stored as Mac text files (default), or DOS or Unix depending on the
choice in the "File saving preferences" dialog accessed from "Settings"
・ MIDI files are saved with type 'Midi' and creator '????'.
### Why don't I hear any sound?
BP2 produces sounds on a MIDI system. A MIDI device (synthesizer or sampler) should be connected
to the Macintosh via a standard MIDI interface hooked to the modem port.
・ It is also possible to connect the MIDI interface to the printer port, but in this case AppleTalk
must be inactive (unless the machine is using EtherTalk network), and the connection option
needs to be changed to "Printer output" in the ヤMiscユ menu of BP2. The option may be saved
by selecting "Save settings" in the "File menu" and saving the settings as ヤ-se.startupユ in
the same folder as BP2.
・ Note that the printer port on some portable computers such as the PowerBook 150 does not
work with MIDI. It will later when BP2 is compatible with Opcode Music System (OMS).
・ Open the "Control panel" in the "Windows" menu and click "Check MIDI" button. Choose channel 1.
・ If no sound is heard check the entire MIDI setup: cables, input/output, volume faders,
channel assignments, etc. Remember that the interface, MIDI device(s) and amplifiers should
be powered!
・ BP2 uses its own MIDI driver, no extension in the System folder. It may not work if the MIDI
interface is already busy with another application or set-up in a particular way by Apple
MIDI manager or Opcode Music System. It is a good idea to deactivate these extensions and
control panels in case other solutions have failed.
・ BP2 also produces Csound scores and MIDI files.
### How can I make music with BP2?
There are three ways of producing music with BP2:
・ A grammar may describe a set of musical pieces produced randomly (a formal language) and played
in sequence -- for instance Mozart's musical dice, see ヤ-gr.Mozartユ.
This is the ヤImprovizeユ mode, in which MIDI input may also be used to monitor processes
interactively, e.g. synchronise the performance (see the "Interaction" window).
・ A grammar may otherwise describe a unique musical piece. This is particularly useful for
complex structures that require a comprehensible hierarchical description.
・ The third method is to edit or import a musical score, ignoring the inference system.
・ Related topics:
"How does the output of BP2 look like?"
"How does the input of BP2 look like?"
"Why don't I hear any sound?"
### What style of music is BP2 dealing with?
・ BP2 is not designed for a particular musical style. It stemmed out of formalizing
music representation and composition tasks in the context of non-western music, notably
North-Indian rhythm. For this reason it focused on text-oriented representations and formal
grammmars. ヤBol Processorユ originates from the word ヤbolユ (Hindi/Urdu ヤbolnaユ, to speak)
designating the onomatopeic expressions mapped to strokes on North Indian drums.
・ When MIDI output was designed, elementary musical ヤgesturesユ that produced sounds on drums
were replaced with "sound-objects", i.e. arbitrary sequences of events encoded as MIDI messages.
・ Recently, simplified sound-objects named "simple notes" were introduced to facilitate work
with western tonal systems in English, French or Indian "note conventions".
・ BP2 is now able to deal with polyphony, and does it in a smart way. See "polymetric structures".
・ BP2 also deals with incomplete representations of polyrhythmic sequences.
See "period notation".
・ BP2 is able to control all MIDI parameters, including continuous parameters such as pitch bend,
polyphonic pressure, panoramic, etc. See "performance controls".
・ BP2 has interactive features used in the "improvize mode". It responds to MIDI messages
(see "Interactive mode") and to "Apple Events".
・ Thanks to Csound, BP2 bypasses limitations of MIDI, and takes advantage of both environments.
(See "Csound implementation")
### How does the output of BP2 look like?
・ There are three representation levels:
1) The symbolic level, at which music is represented as a TEXT score. This score uses either
"simple notes" or "sound-objects" completed with "performance controls".
Polyphonic items use "polymetric expressions".
Sequences may use the "period notation".
2) The graphic level, at which "simple notes" or "sound-objects" are shown with their actual
physical timings.
3) The sound level, a flow of MIDI messages sent in real time to a MIDI device, a MIDI
file or a Csound score.
・ Output options are set in the "Settings" window. If "Display items" is checked then
musical items are first displayed as text scores. This is not recommended for long items.
If "Show graphics" is checked then graphic scores are displayed while items are played on the
MIDI output. If none is checked then items are played directly, but for each item the option
is given to display the text score.
・ A text score may be displayed in graphic and played on the MIDI output: select the text and do
"Play selection" in the "Action" menu.
### How does the input of BP2 look like?
・ A score in text format may be selected and played on the MIDI output: select "Play selection"
in the "Action" menu. Try it for example on "C5 C5 C5 D5 E5_ D5_ C5 E5 D5 D5 C5_ _ _".
・ Examples of (less trivial) text format scores are stored in ヤ-daユ files that may be loaded to
the "Data" window. There are more examples in the enclosed data-base "TryAppleEvents.fm"
which may be opened under Claris FileMaker Pro.
・ A grammar is the formal description of a process producing musical text scores which BP2 is able
to play on its MIDI output. Load for instance ヤ-gr.Mozartユ in the "Grammar" window, then
type command-R or select "Produce items" in the "Action" window.
・ A script is a sequence of meta-instructions performing all operations automatically in BP2.
Scripts are discussed in the initial part ("QuickStart") of the enclosed MS-Word document
"BP2 doc - MS Word".
・ MIDI files type 0, 1 or 2 can be imported to create "sound-object prototypes".
・ Csound scores can be imported to create "sound-object prototypes".
・ BP2 responds to input MIDI messages. See "Interactive mode".
・ BP2 works in a client-server environment. It responds to "Apple Events" that may launch all
kinds of processes. The data-base "TryAppleEvents.fm" is a good illustration of this.
### Interactive mode
In this mode, BP2 is able to respond in real time to MIDI messages that are assigned certain tasks.
Assignments are listed as script instructions in the "Interaction" window.
(Open ヤ-in.abc1ユ to see an example)
・ For instance, instruction
IN Param K1 = controller #7 channel 16
assigns controller #7 on channel 16 to fix the value of parameter K1. This parameter may control
weights in grammar rules, velocities, etc.
・ Related topic: "Apple Events"
### Where can I get the latest version of BP2?
・ Bol Processor BP2 is available on Info-Mac mirror sites
(list available under ftp://ftp.hawaii.edu/mirrors/info-mac/help/)
・ A few sites in Europe:
ftp://ftp.uni-stuttgart.de/pub/systems/mac/info-mac/
ftp://ftp.ibp.fr/pub/mac/info-mac/
・ In North America:
ftp://ftp.agt.net/pub/info-mac/
http://mirror.apple.com/
http://hyperarchive.lcs.mit.edu/HyperArchive.html
・ In Africa:
ftp://ftp.is.co.za/info-mac/
・ In Asia and Pacific:
ftp://ftp.hk.super.net/pub/mirror/info-mac/
ftp://ftp.center.osaka-u.ac.jp/info-mac/
http://mirrors.vuw.ac.nz/info-mac/
ftp://ftp.nus.sg/pub/mac/
ftp://ftp.hawaii.edu/mirrors/info-mac/gst/midi/
### How do I register for BP2?
Bol Processor BP2 is a shareware product.
Fee: 50 US dollars (30 dollars for students, unemployed or citizens of developing countries)
・ Not a commercial product, BP2 is meant to be shared by the international community of music
researchers, musicians and music lovers. Unregistered users shouldn't fear police raids!
However, your contribution will be highly appreciated as the money is entirely
invested on music/development documentation, hardware and software.
(Fees received in 1995 allowed me to buy Opcode MAX.)
・ We are committed to providing continuous support for BP2, in terms of responding to individual
inquiries, as well as in making fixes, upgrades and documentation available to registered
users.
・ To register, send a cheque of equivalent USD amount in any convertible currency to:
Bernard Bel, Centre de Sciences Humaines (CSH)
2, Aurangzeb road, New Delhi 110 011 (India)
E-mail: bel@csh.delnet.ernet.in Fax: (91) 11 301 8480
### Where can I find more information?
・ If you are a new user, a quick visit is recommended:
If you have Clarisェ FileMaker Pro 3.0, then double-click the database "TryAppleEvents.fm".
It calls BP2 as a server to play simple examples of music, grammars and scripts.
Then print the MS-Word document extracted from "BP2doc.sea" and follow the "QuickStart"
manual step by step.
・ BP2 is documented on-line. You are reading this documentation now!
To get information about any feature, type command-? or select "Help" in the "Action" menu.
The cursor is changed to a question mark. Then click any button, select any menu item or
any segment of text to get information.
In this "Help" text, expressions between quotes are hyperlinks to more entries.
・ You may also open "BP2 help" with a word-processor.
・ Contact the designer: bel@csh.delnet.ernet.in, even if you haven't paid the shareware.
First make sure the information you are looking for is not in the documentation!
### Action menu
Containst most commands of BP2. You may document them with the on-line "Help".
### About BP2ノ
Displays version of BP2.
### Variables
BP2 recognizes strings starting with an uppercase character as "variables" in grammars
or in its glossary. It creates a variable if it is not already there, so be careful
with spelling mistakes.
・ You may however start a variable with a lower-case character provided that you write
it between |vertical bars|.
・ Variable names may be of any length and may contain any character (standard or
extended), digit, or punctuation symbol in the set: ¥ - _ # @ * % $ " % ' ・
・ Examples of well-formed variables:
MyNewTrick Good_enough |behind_the_bars| X67$-J Big・mac The"new"thing
It's_there De_No鼠__P衛ues
Peter-Piper-pick'd-a-pick-of-pickl'd-pepper
・ Related topic: "Terminal alphabet"
### Polymetric structures
A structure of "sound-objects" represented as a "polymetric expression".
### Polymetric expressions
・ An expression denoting a polyphonic or/and polyrhythmic structure of "sound-objects".
Example:
{C4 D4 E4,G3 E3} (brackets optional) means that "C4 D4 E4" will be played in the same
time as "G3 E3".
・ BP2 manages to adjust durations. Here, the duration of each beat is determined by the
first beat "C4 D4 E4", hence three beats. It will be interpreted:
/2 {C4_ D4_ E4_,G3_ _ E3 _ _}
yielding the phase diagram:
C4 _ D4 _ E4 _
G3 _ _ E3 _ _
・ BP2 uses the same algorithm to deal with polymetric expressions and with "period notation".
・ A polymetric expression can contain another polymetric expression, including expressions in
"period notation".
Try to play: {C4 D4 E4,{G3,C3} E3} for instance [with "English convention" checked
in the ヤMiscユ menu].
・ Many commented examples will be found in "-da.checkPoly".
### Undetermined rests
・ These are notated ヤ_restユ.
The old notation ヤノユ (be careful: this is a single character, not three periods!)
is still valid, but it is not recommended because of character conversion.
Notated ヤノユ (be careful: this is a single character, not three periods!) or equivalently ヤ_restユ
・ Undetermined rests are used in fields of "polymetric expressions" or in beats of the
"period notation". The interpreter determines their durations as the ones yielding
the simplest expanded expression.
・ For instance, the sequence
a b c d.e _rest f.g h _rest i (also notated a b c d.e ノ f.g h ノ i)
will be expanded as:
a b c d.e - _ f.g h - i
・ Similarly, the polymetric expression
{3/2 c d e, _rest f g} (also notated {3/2 c d e, ノ f g})
will be expanded as:
/2 {- _ _ c _ d _ e _,- _ _ _ _ f _ g _}
・ Each field of a polymetric expression (or each beat of a sequence) may not contain
more than one undetermined rest.
### Period notation
・ Periods are used to indicate ヤbeatsユ, i.e. sequences of "sound-objects" that are
constrained to equal symbolic durations. For instance,
{C4 D4 E4.G3 E3} (Brackets {} are optional)
means that "C4 D4 E4" will be played with the same duration as "G3 E3".
・ The duration of each beat is determined by the first beat "C4 D4 E4", hence three
time units. It will be interpreted:
/2 C4_ D4_ E4_.G3_ _ E3_ _
・ BP2 uses the same algorithm to deal with period notation and with "polymetric expressions".
Thus, {C4 D4 E4,G3 E3} (the period has been replaced with a comma)
will be interpreted:
/2 {C4_ D4_ E4_,G3_ _ E3_ _}
yielding the phase diagram:
C4 _ D4 _ E4 _
G3 _ _ E3 _ _
・ Many commented examples will be found in example file ヤ-da.checkPolyユ.
### Terminal symbols
See "Terminal alphabet"
### Terminal alphabet
・ A ヤvocabularyユ of arbitrary words (terminal symbols) designating "sound-objects".
・ Each word is defined in the ヤalphabetユ window saved as "-ho.filename".
・ A terminal symbol may also be defined at "compile time" if it appears between
single quotes in the grammar, or if it is used in an out-time "sound-object":
<<iAmAnOutTimeSoundObject>>.
・ A terminal symbol must start with a lower-case character (a..z) or any symbol in the
set:
\≠ヤ 炎旧克署葬灯楓利劒屆撼洌セソヒフヘホマリァッオカキクケストニエ#・
・ Other characters in a terminal symbol may be any character (a..z, A..Z) or a
character in the above set, or characters in additional set:
0123456789#%*@「」、ラ$ィゥェ¥'" 。`ォャューアイウサシタチテヌネメモヤユヨ
・ The above restrictions do NOT apply to terminal symbols defined between single quotes
in grammars.
・ You may define relations (homomorphisms) in a given alphabet. See: "homomorphism".
・ Terminal symbols are mapped to "sound-object prototypes" thanks to the information
contained in "-mi.filename". The name of this file should be inserted on top of the
ヤalphabetユ window.
・ BP2 also recognizes predefined terminal symbols called "simple notes".
・ Related topic: "Variables"
### Metavariables
See "Wild cards"
### Wild cards
Symbols ヤ?ユ, ヤ?1ユ, ヤ?2ユ, ... ヤ?nユ are used as wild cards in grammar rules. They may
be instantiated as a single "terminal symbol", "simple note", "variable", bracket,
"out-time object", "synchronization tag", "time pattern" or "performance control".
・ ヤ?ユ (an old notation) is equivalent to ヤ?1ユ.
・ If the expression contains several wild cards ヤ?nユ, values are checked for pattern
matching. For instance,
?1 ?3 ?2 ?2 ?1 ? ?3
may be instantiated as a pattern "xyzzxty" in which occurrences of x, y and z must be
identical.
・ The same wildcards may be found in the right argument of a rule. For instance, the
following rule will reverse the order of two (distinct) symbols:
?1 ?2 --> ?2 ?1
### Compile time
The time when a grammar is being compiled, or some data is being "tokenized". This may
be opposed to "performance time".
### Tokenized data
Grammars and musical items are represented with reserved words, "terminal symbols"
and variables. Before using them, BP2 replaces them with tokens, i.e. numeric
codes. These codes are not visible to users.
### Performance time
The time when a musical item is being played on the sound output. This may be opposed
to "compile time".
### Out-time sound-object
・ It appears between angle brackets: <<this is an out-time sound-object>>.
・ It contains the same sequence of events as an ordinary "sound-object", but its duration
is forced to zero. If its label does not appear in the "Terminal alphabet", a new
terminal symbol will be created at "compile time".
### Null string
A string representing an empty sequence (of "sound-objects"). You may use
"nil", "lambda", "empty" or "null" (without quotes) to designate a null string. You
may also leave the space blank. These are three equivalent notations for the same
rule:
S --> nil
S --> lambda
S --> empty
S --> null
S -->
### Simple notes
These are predefined terminal symbols mapped to predefined "sound-objects"
containing only a NoteOn / NoteOn pair of MIDI messages. These "sound-objects"
are relocatable and have pivots at their beginnings. They can be rescaled at will,
they can be truncated or covered by neighbouring "sound-objects". Their "pre-roll" and
"post-roll" settings are nil.
・ The conventional 440Hz tone may be written ヤA4ユ, ヤla3ユ or ヤdha4ユ, depending on the
note convention set in the ヤMiscユ menu, and the one in the "Tuning" dialog.
・ See: "English convention", "French convention", "Indian convention","Key numbers".
### Tuning dialog
This dialog makes it possible to modify the MIDI keyboard mapping and diapason
reference used by Csound.
・ Usually, key 60 is assigned to C4 (do3 in French, sa4 in Indian), but some MIDI programs,
notably old versions of BP2, use alternate note names such as C5 (do4).
・ The diapason value has no effect on the MIDI output. Its is used by Csound for
instruments requiring a "cps (Hz)" format for pitch.
### Csound
Displays the Csound score attached to this "sound-object prototype".
### Csound tuning
See "Tuning dialog".
### A4 / la3 / dha4 frequency is
See "Tuning dialog".
### MIDI mapping
See "Tuning dialog".
### C4 / do3 / sa4 is MIDI key
See "Tuning dialog".
・ A4 is conventionally 440Hz but you may want to change it if your Mac gets too hot :-)
### Relocatable sound-object
A "sound-object" that may be relocated by the "time-setting algorithm".
### Sound objects
See "Sound-objects"
### Sound-objects
See the reference manual and publications.
・ In short, a sound-object in BP2 is a sequence of ヤelementaryユ events, such as MIDI
or Csound instructions.
・ A typical simple sound-object is a "simple note", i.e. a NoteOn/NoteOff
pair on the same MIDI key and channel.
・ Sound-objects are designated by "terminal symbols". Each object is mapped to
a unique "sound-object prototype" bearing the same name, which defines its metric
and topologic properties. (See reference manual).
### Sound-object prototypes
These contain information about "sound-objects" bearing the same name: the list of
elementary events, and metric and topologic properties used by the "time-setting algorithm".
・ Elementary events may be MIDI events, Csound events, or both.
### Time-setting algorithm
An algorithm used by BP2 to calculate the timings of elementary events (e.g.
MIDI or Csound events) in a musical item. It takes into account the properties of
"sound-objects" (defined by their "sound-object prototypes") and may relocate or
truncate objects in order to satisfy all constraints arising therefrom.
### Homomorphism
This is an optional relation on the "terminal alphabet" used by a grammar. It is
defined over all the terminal symbols and identified by a label. For
instance, let us call TRANS the one-semitone upward transposition in an alphabet of
notes. The alphabet file (saved as "-ho.mynotes") would begin like this:
TRANS
do0 --> do#0 --> re0 --> re#0 etc... --> si9
・ If a "terminal alphabet" uses no homomorphism then arrows "-->" should of course not
be found.
・ You can define several homomorphisms in the same alphabet. Separate them by lines
of hyphens (just like subgrammars).
・ If an homomorphism has been declared, the last terminal of a line is mapped to
itself, unless it is defined cyclically. In the example above it would mean that
si9 --> si9. But we could as well use a cyclic definition:
do0 --> do#0 --> re0 --> re#0 etc... --> si9 --> do0
### Derivation mode
See "Subgrammar type" and "Rule derivation mode"
### Subgrammar
A grammar may be "sliced" in several subgrammars that will be applied successively
to the work string for producing derivations. A new subgrammar is applied only
once there is no more candidate rule in the current subgrammar. You may however
bypass this rule by using jumps like _goto() or _failed().
・ In analysis (parsing) mode, subgrammars are applied in the reverse order.
### Subgrammar type
The strategy followed by the "inference engine" to produce or analyze an item using
the rules of this subgrammar. See: "RND", "ORD", "LIN", "SUB", "SUB1".
### Inference engine
The term is borrowed from expert systems. It designates the process by which rules
in a grammar are selected and and applied by the work string. The inference engine
may perform a "production" (starting from a start string, usually ヤSユ) or a
"membership test" (analysis, parsing) assessing whether a given string belongs to
the language generated by the grammar.
・ "Production" is also called "modus ponens", and analysis "modus tollens", but this
terminology is more appropriate for inference engines based on logical inference.
### Production
See "Inference engine".
### Analysis
See "Inference engine".
### Parsing
See "Inference engine".
### Rule derivation mode
In "production", there are three derivation modes for rules in a subgrammar:
・ RND (default mode): the position of the derivation is choosen randomly
in the work string;
・ LEFT: the position of the derivation is the leftmost occurrence of the left argument
of this rule;
・ RIGHT: the position of the derivation is the rightmost occurrence of the left argument
of this rule;
・ If a subgrammar is of "LIN" type then all rules are applied in "LEFT" mode.
### Programmed grammars
See "flags"
### Flags
Flags are integer global variables indicating particular states during production by
a grammar. This is a generalisation of "programmed grammars".
・ A rule like: X --> a /myflag/
creates a flag labelled ヤmyflagユ and set its value to 1.
・ A rule like: /myflag/ X --> a
will only be candidate if ヤmyflagユ has previously be created and its value is positive.
・ Unlike in previous versions of BP2, the flag value is not modified unless specified:
/myflag - 1/ X --> a
・ Flags may be positive or negative in range [-32768,32767].
・ Flag names may contain up to 30 characters. Any character may be used except:
/ + - = < > イ ウ ュ and tabulations or spaces
・ Other flag features:
X --> a /myflag +3/ increments the value of ヤmyflagユ by 3 units.
X --> a /myflag -5/ decrements the value of ヤmyflagユ by 5 units. Negative values
are accepted.
X --> a /myflag = 3/ assigns 3 to ヤmyflagユ.
/myflag +3/ X --> a checks that ヤmyflagユ is positive, and if so, makes the rule
candidate. When the rule is fired, the value of ヤmyflagユ is incremented by 3 units.
/myflag -5/ X --> a checks that ヤmyflagユ is positive, and if so, makes the rule
candidate. When the rule is fired, the value of ヤmyflagユ is incremented by 5 units.
/myflag = 3/ X --> a checks that ヤmyflagユ is equal to 3, and if so, makes the rule
candidate.
/myflag ュ 3/ X --> a checks that ヤmyflagユ is unequal to 3, and if so, makes the rule
candidate.
/myflag < 3/ X --> a checks that ヤmyflagユ is smaller than 3, and if so, makes the rule
candidate.
/myflag > 3/ X --> a checks that ヤmyflagユ is greater than 3, and if so, makes the rule
candidate.
/myflag イ 3/ X --> a checks that ヤmyflagユ is smaller or equal to 3, and if so, makes
the rule candidate.
/myflag ウ 3/ X --> a checks that ヤmyflagユ is greater or equal to 3, and if so, makes
the rule candidate.
・ Be careful that ヤ=ユ is the assignment operator if found in the right argument of a
rule, and a comparison operator otherwise.
・ A rule may contain several flag conditions, e.g.:
/myflag ウ 3/ /myflag < 20/ /otherflag = 4/ X --> a
・ In assignments and comparisons, numbers may be replaced with other flags
or global variables K1, K2, etc., e.g.:
X --> a /flag1 = K1/ /flag2 = flag1/
/flag1 > K19/ X --> b
/flag2 ュ flag3/ X --> c
・ See for example ヤ-gr.tryflagユ, ヤ-gr.tryflag2ユ, ヤ-gr.tryflag3ユ
・ Note: flag syntax is likely to evolve but it will remain consistent with this one.
### BP grammar
See "true BP grammar"
### 0 (Number streaks fromノ)
Refers to the numbering of time streaks on graphics
### 1 (Number streaks fromノ)
Refers to the numbering of time streaks on graphics
### RND [Subgrammar type or rule derivation mode]
・ As a subgrammar type, it means that when producing an item rules may be used in
a random order. When analysing an item, RND works like ORD.
・ As a rule derivation mode, it means that the position of the derivation, when
producing items, may be choosen randomly. In parsing mode (analysis), position is
tried from right to left. (See rightmost context-sensitive derivation in publications)
### LEFT [Rule derivation mode]
When producing an item, this rule will be applied to the leftmost occurrence of
the left argument in the work string. In parsing mode, the rightmost occurrence
of the right argument will be searched.
### Work string
The string representing the musical item being processed by the grammar. In "production"
mode, it starts with the start string ヤSユ. In analysis (parsing) mode, it starts
with the string under analysis.
### RIGHT [Rule derivation mode]
When producing an item, this rule will be applied to the rightmost occurrence of
the left argument in the work string. In parsing mode, the leftmost occurrence
of the right argument will be searched.
### ORD [Subgrammar type]
A subgrammar the rules of which should be applied in (top-down) order in "production",
and bottom-up order in analysis (parsing).
・ Each rule is applied reatedly until it is no longer candidate.
### LIN [Subgrammar type]
A subgrammar using (context-sensitive) leftmost derivation in "production", and
(context-sensitive) rightmost derivation in analysis. See reference manual and
related publications.
### SUB [Subgrammar type]
A subgrammar using (context-sensitive) substitutions in "production". (It cannot be
used for parsing.) A substitution is the simultaneous application of all candidate
rules in the subgrammar.
### SUB1 [Subgrammar type]
Similar to SUB, but substitutions are performed only once. This is notably used in a
glossary.
### Glossary
・ A glossary is a special subgrammar that is applied to the work string just before
it is played on the MIDI outup or displayed on the graphic window. A convenient
use of glossary is to define instructions that are particular to the sound system.
・ For instance, -gl.GeneralMIDI contains the code needed to select sound ヤpatchesユ on
any synthesizer in the "General MIDI" standard.
### TEM [Subgrammar type]
A list of ヤtemplatesユ used by a true BP grammar. See reference manual.
### Save
Saves the current window.
### Clear
Clears the current window. This is also a script command.
### REC
Starts/stops recording actions as a script (in the script window)
### _goto(igram,irul) [Grammar procedure]
This procedure is found in the right argument of a rule.
・ _goto(igram,irul) will cause BP2 to jump to subgrammar igram, rule irul, when the rule
that contains it has been applied. If (igram,irul) does not point at a candidate rule,
BP2 will either execute a "_failed" conditional jump or search a candidate rule in
subgrammar igram. If none is found it will jump to subgrammar igram+1, etc. as usual.
・ _goto(igram,0) causes to jump to subgrammar igram and go on selecting rules according to the
subgrammar type.
### _failed(igram,irul) [Grammar procedure]
This procedure is found in the right argument of a rule.
・ A conditional jump to another subgrammar or another specific rule in a
subgrammar. Its syntax is: _failed(igram,irul) in which igram and irul have the
same meanings as in "_goto".
・ The jump will be performed if the rule was selected by a preceding "_goto" or "_failed"
and it is not a candidate rule.
### _repeat(n) [Grammar procedure]
This procedure is found in the right argument of a rule.
・ Indicates that the current rule should be tried n times.
・ Alternate syntaxes are _repeat(Kx) and _repeat(Kx = n) where Kx is a parameter
that may be assigned a fixed value (Kx = n) and/or controlled in real time by an
external MIDI device.
### _stop [Grammar procedure]
When encountered in "production", forces production to pause
### _printOn [Grammar procedure]
When encountered in "production", starts the display of various stages of the work string
in the "Trace" window
### _printOff [Grammar procedure]
Cancels the effect of "_printOn"
### _print [Grammar procedure]
When encountered in "production", displays the work string in the "Trace" window
### _stepOn [Grammar procedure]
When encountered in "production", starts the "step-by-step" mode
### _stepOff [Grammar procedure]
Cancels the effect of "_stepOn".
### _traceOn [Grammar procedure]
When encountered in "production", starts displaying various stages of the work string
and traces of all applied rules
### _traceOff [Grammar procedure]
Cancels the effect of "_traceOn".
### _destru [Grammar procedure]
When encountered in "production", destroys the structure of the work string, notably
removing parentheses indicating repetitions
### OFF (quantization)
Cancels the effect of ON (quantization).
### ON (quantization)
When checked, BP2 will use the quantization setting (in milliseconds) to simplify
tables containing "sound-object" structures (the phase diagram, see manual).
・ The result is a saving of memory space and "computation" time making it possible to
compute very complex items.
### _script(scriptline) [Performance control]
The script line will be executed at "performance time". Note that the line may be
a call to another script, etc...
### New Project
"New project" erases the current project (grammar and "terminal alphabet").
・ This is also a script command.
### Load
Loads a file.
### Load Project ヌfilenameネ
Erases the current project and loads a new one (grammar and "terminal alphabet") along
with attached settings (-se.file), interactive codes (-in.file) and glossary (-gl.file).
・ You will be prompted to select a grammar file.
・ BP2 will read the name of the corresponding ヤ-hoユ "Terminal alphabet" file in the grammar
file and, if found, will load the alphabet file automatically.
・ This is also a script command.
### Check script syntax
Checks the syntax of the script displayed in the "Script" window, and of other scripts
called at the time the current script is executed.
・ Even if the syntax is correct, it may be necessary to update directory information in
case a file used by the script has been moved. This will be done automatically when
invoking this command.
・ Tip: if you want to save time on checking scripts, you should put aliases of all
files used by a script into the same folder.
### Alphabet (cmd-H)
"Alphabet" brings to front the "Terminal alphabet" window, which may contain a ヤ-hoユ file.
・ This is also a script command.
### Glossary
"Glossary" brings to front the ヤglossaryユ window, which may contain a ヤ-glユ file.
・ This is also a script command.
### Clear
Clears current selection. This is also a script command.
### Cut
Cuts current selection. This is also a script command.
### Copy
Copies current selection. This is also a script command.
### Paste
Pastes the content of scrap in replacement of current selection.
・ This is also a script command.
### Findノ replace
Finds and replaces strings. It accepts special characters:
^t for tabulation
^r or ^p for paragraph
^n for new line
### Compile
Compiles current alphabet, grammar, interactive codes and glossary (if any).
・ This is also a script command.
### Control panel
Brings to front the control panel. This is also a script command.
### Data (cmd-D)
"Data" brings to front the "Data" window, which may contain a ヤ-daユ file.
・ This is also a script command.
### Grammar (cmd-G)
"Grammar" brings to front the "Grammar" window, which may contain a ヤ-grユ file.
・ This is also a script command.
### Graphics
Brings to front the "Graphics" window. This is also a script command.
### Interaction
"Interaction" brings to front the "Interaction" window, which may contain a ヤ-inユ file.
・ See "Interactive mode".
・ This is also a script command.
### Scrap
"Scrap" brings to front the "Scrap" window, which may contain whatever you want.
Scrap is saved as pure text.
・ This is also a script command.
### Info
"Info" brings to front the "Info" window. It should not be used to type any
data because it may be erased without warning.
・ This is also a script command.
### Keyboard
"Keyboard" brings to front the "Keyboard" window, which may contain tokens loaded from
a ヤ-kbユ file. (See "Use tokens")
・ This is also a script command.
### Settings
Brings to front the two "Settings" windows.
・ This is also a script command.
### Objects (cmd-E)
"Objects" gives access to the "sound-object" editor.
・ This is also a script command.
### Produce items (cmd-R)
This ヤrunsユ the current project: alphabet and grammar are compiled, then items are
produced, displayed, played on the MIDI output, etc., depending on the settings.
(See "Settings")
・ Beware of the settings because they may force "production" to
continue forever ("Improvize") or the item to be played repeatedly ("Cyclic play").
・ This is also a script command.
### Produce and play ヌintネ items [script command]
Uses the current grammar to produce the specified number of items. It sets "Cyclic play"
to "false".
### Play ヌany itemネ [Script command]
Play specified item. An item is an expression containing "terminal symbols",
"simple notes" and "performance controls".
### Play-show ヌintネ times selection in window ヌwindownameネ [script command]
Plays the selection several times.
### Set output window ヌwindownameネ [script command]
Displays grammar productions in specified window. Default is "Data".
### Produce templates
If the grammar is a ヤtrue BPユ grammar (see manual) then "Produce templates" creates
all templates generated/recognized by the current grammar, and displays them at
the end of the grammar. (See "-gr.dhin--" for example.)
・ This is also a script command.
### Quit
To quit BP2.
・ This is also a script command.
### Randomize
This creates a new random seed (based on the internal clock).
・ This is also a script command.
### Script
This brings to front the "Script" window.
・ This is also a script command.
### Start string
This brings to front the "Start string" window.
・ This is also a script command.
### Trace
This brings to front the "Trace" window.
・ This is also a script command.
### Activate window ヌwindownameネ [Script command]
Brings to front specified window and makes it active.
### Hide window ヌwindownameネ [Script command]
Hides specified window (and erases its content if it is ヤHelpユ, ヤGraphicsユ or ヤTraceユ).
### Analyze selection in window ヌwindownameネ
Analyses the selected item using the current grammar.
・ This is possible only if it is a ヤtrue BPユ grammar (see manual), which BP2
will recognize.
・ If the result is ヤSユ then the item belongs to the language produced by the grammar.
・ This is also a script command.
### Buffer size ヌlongネ symbols [Script command]
Sets the limit of the work string, may be increased once this limit has been reached.
・ This is a good way of controlling the length of items produced by a grammar
describing an infinite language.
### Clear window ヌwindownameネ [Script command]
Clears specified window
### Define ヌvariableネ ヌsound itemネ [Script command in glossary]
This a ヤglossaryユ instruction allowing a variable (any string starting with an uppercase
character) to be replaced with an expression that makes sense to the sound output. A
typical case is the assignment of MIDI program numbers (the ヤpatchesユ of a synthesizer)
to names denoting different ヤinstrumentsユ.
・ See for instance ヤ-gl.GeneralMIDIユ for standard names of instruments in
the "General MIDI" standard.
### MIDI [Formatノ]
Items produced by grammar are played in "MIDI" format
### MIDI format
Musical Instrument Digital Interface: a communication device between computers and
electronic musical instruments
### Csound format
・ Csound is a public-domain software for creating or transforming sound files on computers
equipped with a 16-bit sound output. It is distributed with source code (in C) that
may be compiled on many different platforms (notably running Unix and MacOS).
・ Csound uses two text files as an input: an ヤorchestraユ file describing sound production
procedures (a set of virtual instruments), and a ヤscoreユ file describing sound events.
・ BP2 (above version 2.6.2) produces Csound score files using its own representation
of musical items, grammars and scripts, and a minimum amount of information about
the arguments expected by instruments in the Csound orchestra file.
・ Related topic: "Csound implementation"
### Csound OFF [script command]
Cancels effect of Csound ON
### Csound ON [script command]
Allows "production" and analysis of Csound files. [Not implemented]
### Default buffer size ヌlongネ symbols [Script command]
Sets the value of Buffer size in the beginning of a "production".
### Delete ヌunsignedネ chars [Script command]
Deletes specified number of chars in current edit window
### Don't use tokens for key strokes [Script command]
Cancels the effect of "Use tokens"
### Expand selection window ヌwindownameネ
Displays selected "polymetric structure" as interpreted by BP2.
・ Two equivalent interprations are displayed. The first one is the most compact
representation (the one used internally by BP2). The second one is the complete
expression, containing no explicit "tempo marker". The first expression may
imply a rescaling.
・ For instance,
{a b,c d e}
is interpreted:
[Rescaled, "dilation ratio" = 2] /2 {a b, /3 c d e}
/3 {a_ _ b_ _,c_ d _ e_}
・ This is also a script command.
### Show periods
Rewrites the selection taking into account the "section header".
### Section headers
If a, b, c are sound objects, a sequence may be notated:
3+4+2/4 abbabccabcca /3 abcccbaab /1 bbb
・ Expression "3+4+2", called the "section header", means that sections of the meter
contain 3, 4 and 2 beats.
・ The musical example starts at speed 4, goes on at speed 3 and ends up at speed 1.
・ If "Show periods" is applied to this item, the new display will be:
abba.bcca.bcca.ツ
abc.ccb.aab.b.ツ
b.b
・ Thus, periods indicate beat delimitations and line breaks ヤツユ sections.
・ Note that there must be a period before a line break, otherwise the last beat would be
merged with the first one of the next line.
・ The old notation "3/4/2/4 abbabccabcca /3 abcccbaab /1 bbb" is no more valid.
### Prompt ON [Script command]
Cancels the effect of "Prompt OFF".
### Prompt OFF [Script command]
When encountered in a script, all "wait for..." instructions and
interactive commands are bypassed until the "Prompt ON" instruction resets interactivity
to normal. This is a useful debugging technique allowing a script to be executed
without interruption.
### Freeze windows OFF [Script command]
Cancels the effect of Freeze windows ON.
### Freeze windows ON [Script command]
See "Freeze windows".
### Freeze windows (toggle)
"Freeze windows on" prevents BP2 from recording the new positions ans sizes of windows
along with the settings of the current project. It also prevents windows to be moved
or resized when new settings are loaded. This was only useful for saving time on old
Mac+ screens.
### Graphic scale ヌlongネ pixels = ヌlongネ milliseconds [Script command]
Changes settings of the graphics window. (See "Graphic settings" dialog)
### Open file ヌfilenameネ [Script command]
Opens a file. Different windows may force you to open certain types of files only.
### Load settings ヌfilenameネ [Script command]
Loads settings for a specified work environment or project.
### Maximum production time ヌlongネ ticks [Script command]
Sets the maximum time during which items will be produced. Time is measured in
ticks, i.e. 60ths of a second. Beware that the effect will depend on the speed of
the machine. In general it is better to specify the number of items to produce.
・ Related topic: "Produce ヌintネ items"
### MIDI file OFF [Script command]
Cancels effect of "MIDI file ON".
### MIDI file ON [Script command]
If this is checked you will be prompted to save items as MIDI files after
hearing them.
### Show time setting ON [Script command]
Forces the display of calculations during time setting.
### Show time setting OFF [Script command]
Cancels effect of "Show time setting ON".
### MIDI file (Formatノ)
When checked, allows the "production" and edition of MIDI orchestra and score files.
### MIDI program ヌ0..127ネ [basic channel] [Script command]
Sets MIDI program to number assigned. Generally this is used for selecting different
ヤpatchesユ (instruments) on a synthesizer. Numbering is 0 to 127, following MIDI
specification 1.0, but some constructors are numbering 1 to 128 instead -- notably in
the case of "General MIDI"...
### MIDI set-up time ヌintネ milliseconds [Script command]
Changes MIDI set-up time in the "Time accuracy" dialog. It is the estimated delay of
MIDI messages sent by BP2 to various devices.
### MIDI controller #ヌ0..127ネ = ヌ0..127ネ channel ヌ1..16ネ [Script command]
Sets specified controller to specified value.
### MIDI local control OFF channel ヌ1..16ネ [Script command]
Sets local control to OFF on MIDI devices having specified channel as default channel.
### MIDI local control ON channel ヌ1..16ネ [Script command]
Sets local control to ON on MIDI devices having specified channel as default channel.
### MIDI all notes OFF channel ヌ1..16ネ [Script command]
Sends an AllNotesOff message on specified channel.
### MIDI Omni mode OFF channel ヌ1..16ネ [Script command]
Sets Omni mode OFF on MIDI device(s) controlled by specified channel.
### MIDI Omni mode ON channel ヌ1..16ネ [Script command]
Sets Omni mode ON on MIDI device(s) controlled by specified channel.
### MIDI Mono mode ON [ヌ0..16ネ voices] channel ヌ1..16ネ [Script command]
Sets Mono mode ON on MIDI device(s) controlled by specified channel.
### MIDI Poly mode ON channel ヌ1..16ネ [Script command]
Sets Poly mode ON on MIDI device(s) controlled by specified channel.
### MIDI decimal send ヌdecimal dataネ [Script command]
Sends deciimal data to the MIDI output. Using this low-level command is
not recommended, except for system-exclusive messages.
### MIDI hexa send ヌhexadecimal dataネ [Script command]
Sends hexadecimal data to the MIDI output. Using this low-level command is
not recommended, except for system-exclusive messages.
### MIDI switch ON ヌ64..95ネ channel ヌ1..16ネ [Script command]
Switches ON specified switch on specified channel (e.g. the ヤholdユ pedal).
### MIDI switch OFF ヌ64..95ネ channel ヌ1..16ネ [Script command]
Switches OFF specified switch on specified channel (e.g. the ヤholdユ pedal).
### MIDI set basic channel to ヌ1..16ネ [Script command]
Specifies on which channel the following program change messages should be sent.
### Return [Script command]
Returns to the script in which a subscript was called.
### Resume
Allows current process to continue if it has been interrupted by "Pause".
・ This may also be done by receiving an "Apple Event" of class 'Bel0' and ID 'cont'.
### Stop
Forces current process to abort.
・ This is also a script command.
### Pause
Allows current process to pause until the ヤResume' command is activated by clicking the
"Resume" button or sending an "Apple Event" of class 'Bel0' and ID 'cont'.
・ This is also a script command.
### French convention
Use French names of notes: dob, do, do#, reb, re, re#, mib, mi, mi#, fab, fa, fa#, solb,
sol, sol#, lab, la, la#, sib, si, si# and octave numbers such that la3 = 440 Hz.
・ The keyboard displayed by this command allows you to select alternate names, e.g. "reb"
instead of "do#". These choices are stored along with settings. BP2 does recognize
both names anyway, so the choice is only for screen display.
・ Also note that changing the "note convention" causes BP2 to recompile the script (if any)
displayed in the "Interaction" window (and saved as ヤ-in.filenameユ).
・ Related topic: "Tuning"
### English convention
Use English names of notes: Cb, C, C#, Db, D, D#, Eb, E, E#, Fb, F, F#, Gb, G,
G#, Ab, A, A#, Bb, B, B# and octave numbers such that A4 = 440 HzgThe keyboard
displayed by this command allows you to select alternate names, e.g. "Db"
instead of "C#". These choices are stored along with settings. BP2 does recognize
both names anyway, so the choice is only for screen display.
・ Also note that changing the "note convention" causes BP2 to recompile the script (if any)
displayed in the "Interaction" window (and saved as ヤ-in.filenameユ).
・ Related topic: "Tuning"
### Indian convention
Use Indian names of notes: sab, sa, sa#, reb, re, re#, gab, ga, ga#, mab, ma, ma#, pab,
pa, pa#, dhab, dha, dha#, nib, ni, ni# and octave numbers such that dha4 = 440 Hz.
・ The keyboard displayed by this command allows you to select alternate names, e.g. "sa#"
instead of "rek". These choices are stored along with settings. BP2 does recognize
both names anyway, so the choice is only for screen display.
・ Also note that changing the "note convention" causes BP2 to recompile the script (if any)
displayed in the "Interaction" window (and saved as ヤ-in.filenameユ).
・ Related topic: "Tuning"
### Key numbers
Use MIDI key numbers to represent notes, for example ヤkey#60ユ is middle C.
・ Changing the "note convention" causes BP2 to recompile the script (if any) displayed in
the "Interaction" window (and saved as ヤ-in.filenameユ).
・ Related topic: "Tuning"
### Note conventions
Conventions used for writing "simple notes".
・ Related topics:
"Note convention = English"
"Note convention = French"
"Note convention = Indian"
"Note convention = key numbers"
"Tuning"
### Note convention = English [Script command]
Use English names of notes: Cb, C, C#, Db, D, D#, Eb, E, E#, Fb, F, F#, Gb, G,
G#, Ab, A, A#, Bb, B, B# and octave numbers such that A4 = 440 Hz.
・ Related topic: "Tuning"
### Note convention = French [Script command]
Use French names of notes: dob, do, do#, reb, re, re#, mib, mi, mi#, fab, fa , fa#, solb,
sol, sol#, lab, la, la#, sib, si, si# and octave numbers such that la3 = 440 Hz.
・ Related topic: "Tuning"
### Note convention = Indian [Script command]
Use Indian names of notes: sab, sa, sa#, reb, re, re#, gab, ga, ga#, mab, ma, ma#, pab,
pa, pa#, dhab, dha, dha#, nib, ni, ni# and octave numbers such that dha4 = 440 Hz.
・ Related topic: "Tuning"
### Note convention = key numbers [Script command]
Use MIDI key numbers, for example ヤkey#60ユ is middle C.
・ Related topic: "Tuning"
### Number streaks from 0 [Script command]
Refers to the numbering of time streaks on graphics. (See "Graphic settings" dialog)
### Number streaks from 1 [Script command]
Refers to the numbering of time streaks on graphics. (See "Graphic settings" dialog)
### Print window ヌwindownameネ [Script command]
Prints current active window.
### Quantization ヌlongネ milliseconds [Script command]
The minimum significant duration. It is convenient to set quantization to the largest
acceptable value in order to save "computation" time and space. Note that quantization
in BP2 has no effect on long-term accuracy.
### Quantize OFF [Script command]
Cancels the effect of "Quantize ON".
### Quantize ON [Script command]
See "Quantization".
### Reset random sequence [Script command]
Reseeds the random number generator with the value specified by "Set random seed"
### Reset keyboard [Script command]
Resets keyboard tokens. (See "Use tokens")
### Run script ヌfilenameネ [Script command]
Runs the specified script, if found on the disk in current directory.
### Select all in window ヌwindownameネ [Script command]
Selects entire specified window.
### Set directory ヌlongネ [Script command]
Sets current directory to specified value. Normally this value is not typed.
・ The instruction is created wherever necessary bu running "Check current script".
### Set random seed ヌunsignedネ [Script command]
Sets the value of the random seed to specified value, and restarts the random
sequence. This makes it possible to reproduce a sequence of ヤrandomユ decisions.
### Set selection start ヌlongネ [Script command]
Sets the beginning of text selection to specified position.
### Set selection end ヌlongネ [Script command]
Sets the end of text selection to specified position.
### Set Vref ヌintネ [Script command]
Sets current volume to specified value. Normally this value is not typed.
・ The instruction is created wherever necessary bu running "Check current script".
### Smooth time [Script command]
Sets time to smooth. (See the "Metronom" dialog)
・ This means that time streaks will not be generated by the metronom, but by the
first sequence of objects. This is often associated with "time patterns".
・ Related topic: "Striated time"
### Striated time [Script command]
Sets time to striated. (See the "Metronom" dialog)
・ This means that the metronom will generate time streaks on which the pivots of
"sound-objects" may be placed.
・ Related topic: "Smooth time"
### Tempo ヌlongネ ticks in ヌlongネ secs [Script command]
Sets the time base to specified values. (See the "Time base" dialog.)
### Time base dialog
A dialog containing specifications for the time base. On top, the current metronom
value (matching the one in the "Metronom" dialog) is expressed with a ratio of
ticks against seconds, e.g. 3 ticks in 2 seconds means 1.5 beats per second,
i.e. mm = 90.
・ Below are three cycles of tick patterns. Enter a duration for
each cycle (between 1 and 40). Square check boxes indicating beats become hilited.
・ Check squares for hearing the ticks.
・ Clicking a square with the Option key down allows a more detailed specification.
### Reset cycle
In the "Time base" dialog, resets all cycles to the first beat.
### Clear cycle
In the "Time base" dialog, unchecks all ticked beats in a tick pattern.
### Time resolution ヌlongネ milliseconds [Script command]
Sets time resolution to specified value. (See the "Time accuracy" dialog.)
### Type ヌlineネ [Script command]
When this script is executed, ヌlineネ is printed in the window previously selected by
script instruction "Activate window".
・ "Type <return>" inserts line feeds.
### Use buffer limit
It forces BP2 to check the length of the work string (the item being produced) against
the limit value fixed in window "Buffer size".
### Use buffer limit OFF [Script command]
Cancels the effect of "Use buffer limit ON".
### Use buffer limit ON [Script command]
When checked, "production" will stop each time the "work string" reaches the size
specified in dialog "Buffer". BP2 will prompt the user to allow expanding the
buffer, or terminate production.
### Wait ヌlongネ milliseconds [Script command]
Instructs BP2 to wait for the specified number of milliseconds.
### Wait for ヌkey stroke or MIDI eventネ [Script command]
To define the wait event, the easiest is to check ヤRECユ in the script window,
then click ヤWAIT FOR:ユ.
・ Examples of correct syntax:
Wait for g -- waiting for key ヤgユ to be depressed
Wait for cmd-r -- waiting for command ヤrユ to be depressed
Wait for Eb4 channel 1 -- waiting for a NoteOn on the MIDI input, key E flat,
octave 4, channel 1
Wait for mib3 channel 16 -- identical to the third one, in French convention
Wait for space -- waiting for the space bar to be depressed
### Reset interaction [Script command]
Resets the interactive environment, i.e. all features
that allow the real-time control of BP2 by an external MIDI device.
・ This environment is saved in a ヤ-in.filenameユ file.
・ Resetting the interactive environment can also be achieved by clearing the window
"Interaction".
### IN Derive further ヌnoteネ channel ヌ1..16ネ [toggle]
This is a script command modifying the interactive environment set by the ヤ-inユ file.
・ When flag "Derive further" is ON (see also "Settings" window), instead of initializing
the work string to the start string (generally ヤSユ), BP2 will try to produce a derivation
of the last item it generated.
### IN On ヌnoteネ channel ヌ1..16ネ do ヌscript instructionネ
Specified NoteOn received by BP2 provokes the execution of script instruction.
### IN Reset weights ヌnoteネ channel ヌ1..16ネ [toggle]
This is a script command modifying the interactive environment set by the ヤ-inユ file.
・ Specified NoteOn allows rule weights in the grammar to be reset once an item has been
produced.
### IN Start play ヌnoteネ channel ヌ1..16ネ
This is a script command modifying the interactive environment set by the ヤ-inユ file.
・ Sets the NoteOn message allowing the synchronization of the item to be played.
・ See "Synchronize start".
### IN Repeat ヤvユ times ヌnoteネ channel ヌ1..16ネ [v = velocity]
This is a script command modifying the interactive environment set by the ヤ-inユ file.
・ Specified NoteOn forces ヤvユ times repetition of the item currently played.
・ To stop repeating, you may also use "IN End repeat" or "IN Quit".
### IN End repeat ヌnoteネ channel ヌ1..16ネ
This is a script command modifying the interactive environment set by the ヤ-inユ file.
・ When the note is received, it cancels the effect of "IN Repeat forever".
### IN Repeat forever ヌnoteネ channel ヌ1..16ネ
This is a script command modifying the interactive environment set by the ヤ-inユ file.
・ If the note is received then the current item will be played forver.
(The effect is the same as "Cyclic play" in the "Settings" window.)
・ To stop repeating, use "IN End repeat" or "IN Quit".
### IN Quit ヌnoteネ channel ヌ1..16ネ
This is a script command modifying the interactive environment set by the ヤ-inユ file.
・ Aborts improvisation or "computation".
### IN Use each substitution ヌnoteネ channel ヌ1..16ネ [toggle]
This is a script command modifying the interactive environment set by the ヤ-inユ file.
・ When the note is received, it changes the status of the "Use each substitution" flag.
(See the "Settings" window.) This relates to "SUB" subgrammars: if the flag is on,
then each substitution is played on the sound output.
### IN Control tempo controller #ヌ0..127ネ channel ヌ1..16ネ range ヌfloatネ
This is a script command modifying the interactive environment set by the ヤ-inユ file.
・ Sets specified MIDI controller to modify tempo in specified range. When the controller's
position is medium (64) tempo is the one set by the metronom value. When it is
maximum (127) tempo is multiplied by range. When it is minimum (0) tempo is
divided by range.
### Synchronize start ON-OFF ヌnoteネ channel ヌ1..16ネ [toggle]
This is a script command modifying the interactive environment set by the ヤ-inユ file.
・ Changes the status of "Synchronize start". (See "Settings" dialog)
### IN Set computation time to ヤvユ ヌnoteネ channel ヌ1..16ネ [v = velocity]
This is a script command modifying the interactive environment set by the ヤ-inユ file.
・ When the mentioned note is received it will set a new "computation" time limit for the
item being computed.
### IN Smooth-striated time ヌnoteネ channel ヌ1..16ネ [toggle]
This is a script command modifying the interactive environment set by the ヤ-inユ file.
・ Specified NoteOn changes time from smooth to striated and conversely.
(See "Striated time").
### IN Use-ignore object constraints ヌnoteネ channel ヌ1..16ネ [toggle]
This is a script command modifying the interactive environment set by the ヤ-inユ file.
・ Specified NoteOn changes the status of "Ignore constraints". (See "Settings" dialog)
### IN Skip next item ヌnoteネ channel ヌ1..16ネ
This is a script command modifying the interactive environment set by the ヤ-inユ file.
・ Specified NoteOn instructs BP2 to skip the item being computed. This is required, for
instance, if important parameters like tempo have been modified.
### IN Play again item ヌnoteネ channel ヌ1..16ネ
This is a script command modifying the interactive environment set by the ヤ-inユ file.
・ Specified NoteOn instructs BP2 to play once again the item being played.
### IN Synchro tag ヌWxネ = ヌnoteネ channel ヌ1..16ネ
This is a script command modifying the interactive environment set by the ヤ-inユ file.
・ Sets specified tag to respond to specified NoteOn. When this tag is encountered in an
item, BP2 will wait for the NoteOn. (A message will be displayed.)
### IN Param ヌKxネ = controller #ヌ0..127ネ channel ヌ1..16ネ
This is a script command modifying the interactive environment set by the ヤ-inユ file.
・ Sets specified MIDI controller to control the value of parameter Kx.
### IN Parameter ヌKxネ = velocity ヌnoteネ channel ヌ1..16ネ
This is a script command modifying the interactive environment set by the ヤ-inユ file.
・ Sets specified key to control the value of parameter Kx. Value is changed on NoteOn
and set to the velocity.
### IN Min ヌlongネ tick in ヌlongネ s ヌnoteネ max ヌlongネ tick in ヌlongネ s ヌnoteネ channel ヌ1..16ネ
This is a script command modifying the interactive environment set by the ヤ-inユ file.
・ The first ヌnoteネ will set the time base to its minimum value (in ticks per second).
・ The second ヌnoteネ will set the time base to its maximum value.
・ Both notes must be on the same channel.
・ Intermediate notes will set the time base to an interpolated value.
・ Time base setting is expressed by the number of ticks against the number of seconds,
for example: 13287 ticks in 4563 seconds. (Accuracy is absolute!)
### Text Color ON [script command]
Forces color text display. Subsequent changes in settings will be ignored.
### Text Color OFF [script command]
Forces black and white text display. Subsequent changes in settings will be ignored.
### Graphic Color ON [script command]
Forces color graphic display. Subsequent changes in settings will be ignored.
### Graphic Color OFF [script command]
Forces black and white graphic display. Subsequent changes in settings will be ignored.
### BP2 script
This command does nothing. It may be inserted on top of a script to enable BP2 and other
software to figure out that a file contains a BP2 script.
・ It is compulsory on top of ヤ-inユ interactive files for BP2 to recognize ヤnewユ formats.
### Random sequence
Displays this dialog.
### Time accuracy
Displays this dialog.
### Buffer size
Displays this dialog.
### Graphic settings
Displays this dialog.
### Modem output
Sets BP2 to send MIDI messages through the ヤModemユ serial port.
### Printer output
Sets BP2 to send MIDI messages through the ヤPrinterユ serial port. Make sure that
AppleTalk is not active.
### Reset windows
Resets window sizes and locations to default.
### Split terminal symbols
When checked, inserts spaces between terminal symbols in items produced by the grammar.
### Split |variables|
When checked, marks variables with vertical lines in items produced by the grammar.
・ This is only useful with black and white display.
### Type text
When checked, cancels the effect of "Use tokens".
### Receive MIDI data to file
This command allows you to store in-coming MIDI data to a text file. It may be used,
for instance, to save the set-up of any MIDI device using its bulk transfer facility.
・ Time information is not saved, i.e. this is convenient for system exclusive messages.
・ Note: on a slow machine like Mac II-ci you won't be able to receive a bulk transfer
properly. Some data gets lost. If you have such problems, use the ヤD-50ユ bulk tranfer
facility in HyperMIDI. It works with any type of transfer and will be successful
provided that the in/out buffer of SoundObjectEditor is set to a sufficient value
(approximately 120 000 bytes for a D-50 bulk transfer producing exactly 36 048 MIDI
events).
### Send MIDI data from file
This command allows you to send data to a MIDI device from a text file. It may be used,
for instance, to initialize a MIDI device using its bulk transfer facility.
・ Data is sent at the maximum rate allowed by the MIDI interface.
### Type from MIDI [toggle]/J
When "Type from MIDI" is active (special cursor), any key you hit on the MIDI keyboard
types the corresponding note in the currently active window. Names of notes depend on
the convention you select: English, French, Indian, key numbers.
・ Pushing the "Hold" pedal displays a prolongation symbol ヤ_ユ.
・ In the same mode, program changes are recorded as script commands, and it is possible
to enter automatically the arguments of the following "performance controls":
_chan(),_vel(),_volume(),_pan(),_mod(),_press(),_pitchbend(),_pancontrol(),_volumecontrol().
・ Click on the control's name, move the corresponding MIDI control an hit any key on the
computer to freeze the correct value.
・ This parameter capture looks at preceding _pitchrange(), _pancontrol() and
_volumecontrol() in order to check the proper controller and assess its range.
### Load time pattern
When either grammar or data window is active, this allows you to create "time patterns".
・ Play notes in sequence on the MIDI keyboard at the correct tempo.
・ For a sequence of ヤnユ notes, BP2 will create ヤn-1ユ time objects: t1,t2, etc., which will
be assigned duration ratios.
### Time patterns
Sequences of time intervals characterized by precise ratios, to be used in "smooth time".
・ These are processed like (codeless) "sound-objects". They are usually put together in
the first field of a "polymetric expression".
・ Use "Load time pattern" to create these patterns, or type them in the grammar or alphabet.
・ Example:
TIMEPATTERNS:
t1= 1/1 t2 = 3/2 t3 = 4/3
t4 = 1/2
-----------------------
・ Time patterns always start with ヤtユ followed with digits. Expressions may contain an
integer or an integer ratio. An example of polymetric expression using these time
patterns is: {t1 t3 t4, do5 re5 mi5 fa5 - la5} (See project ヤ-gr.tryTimePatternsユ)
### _chan(x) [Performance control]
Sets current channel to x.
### _vel(x) [Performance control]
Sets velocity of following "sound-object" to x.
### _velcont [Performance control]
Indicates that velocity should change continuously. [Equivalent to "_velstep" in
current version]
### _velstep [Performance control]
Indicates that velocity should change stepwise between two specified values.
### _script(x) [Performance control]
Indicates that script line ヤxユ should be executed just before the next "sound-object"
or "simple note" is played.
### _mod(x) [Performance control]
Indicates that modulation should be set to x.
### _modstep [Performance control]
Indicates that modulation should change stepwise between two specified values.
### _modcont [Performance control]
Indicates that modulation should change continuously.
・ See "Continuous performance control"
### _pitchbend(x) [Performance control]
Controls pitchbend in two possible ways. If _pitchrange(r) is not specified or is null
for the current MIDI channel, then x is the actual MIDI value (range 0..16383).
・ If _pitchrange(r) is specified, then x is the correction in cents.
(Also see "_pitchrange")
### _fixed [Performance control]
_fixed(param) indicates that "Performance parameter" ヤparamユ does not vary.
・ This is the default setting for any performance parameter.
・ Related topics: "_step", "_cont", "_value", "Performance parameter".
### _step [Performance control]
_step(param) indicates that "Performance parameter" ヤparamユ varies stepwise.
・ Related topics: "_fixed", "_cont", "_value", "Performance parameter".
### _cont [Performance control]
_cont(param) indicates that "Performance parameter" ヤparamユ varies continuously.
・ The default setting for any performance parameter is stepwise.
・ Related topics: "_fixed", "_step", "_value", "Performance parameter".
### _value [Performance control]
_value(param,x) assigns numeric value ヤxユ to "Performance parameter" ヤparamユ.
・ The value may be an integer or floating-point relative number.
・ In the present version only 256 ヤ_value(ノ,x)ユ statements can be handled with
different ヤxユ values.
・ Related topics: "_fixed", "_step", "_cont", "Performance parameter".
### Performance parameter
Up to 256 parameters with arbitrary names may be handled by BP2 apart from the
predefined ones: pitchbend, pressure, modulation, etc. which generate
MIDI messages and Csound events.
・ An arbitrary parameter is automatically created when refered to in a "_value", "_fixed",
"_cont" or "_step" statement.
・ These parameters have no effect on the MIDI output. A parameter is used by a Csound
instrument if its name is found as a "Parameter name" in the Csound instrument
description.
(See "Csound instruments" in the "Ouput" menu and click the "MOREノ" button)
・ If a sequence of sound-objects or simple notes is preceded with ヤ_cont(param)ユ,
the parameter ヤparamユ will be interpolated as explained in
"Continuous performance control". In this case, it advisable to use two
indexes for passing the start and end values over to the instrument.
(See "Start index" and "End index")
・ A typical expression containing a variable parameter named ヤblurbユ:
_cont(blurb) _value(blurb, 154.2) A4 B4 C4 _value(blurb, -21) D4
・ Related topics: "_fixed", "_step", "_cont", "_value", "Parameter name".
### _pitchstep [Performance control]
Indicates that pich should change stepwise between two specified values.
### _pitchcont [Performance control]
Indicates that pich should change continuously between two specified values.
・ See "Continuous performance control"
### _press(x) [Performance control]
Controls channel pressure on current channel. Range of x is 0..127 and may be set by a
controller: _press(60), _press(K1=25), _press(K8), etc.
### _presstep [Performance control]
Indicates that channel pressure should change stepwise between two specified values.
### _presscont [Performance control]
Indicates that channel pressure should change continuously between two specified values.
・ See "Continuous performance control"
### _switchon(i,c) [Performance control]
Sets controller i to 127 on channel c. For instance, if controller 64 is the hold
pedal, this command will have the same effect as pushing the pedal.
### _switchoff(i,c) [Performance control]
Sets controller i to 0 on channel c. For instance, if controller 64 is the hold pedal,
this command will have the same effect as releasing the pedal.
### _volumestep [Performance control]
Indicates that volume should change stepwise between two specified values.
### _volumecont [Performance control]
Indicates that volume should change continuously between two specified values.
・ See "Continuous performance control"
### _panstep [Performance control]
Indicates that panormic should change stepwise between two specified values.
### _pancont [Performance control]
Indicates that panormic should change continuously between two specified values.
・ See "Continuous performance control"
### _legato(x) [Performance control]
Indicates that durations will be increased by x% to produce legato effect.
### _staccato(x) [Performance control]
Indicates that durations will be decreased by x% to produce staccato effect.
### _articulstep [Performance control]
Indicates that articulation (legato-staccato) should change stepwise between two
specified values.
### _articulcont [Performance control]
Indicates that articulation (legato-staccato) should change continuously between two
specified values.
### _velfixed [Performance control]
Cancels the effect of _velcont or _velstep.
### _modfixed [Performance control]
Cancels the effect of _modcont or _modstep.
### _pitchfixed [Performance control]
Cancels the effect of _pitchcont or _pitchstep.
### _pressfixed [Performance control]
Cancels the effect of _presscont or _presstep.
### _volumefixed [Performance control]
Cancels the effect of _volumecont or _volumestep.
### _articulfixed [Performance control]
Cancels the effect of _articulcont or _articulstep.
### _panfixed [Performance control]
Cancels the effect of _pancont or _panstep.
### _pitchrange(x) [Current channel] [Performance control]
Sets the range of pitchbend control to ア x cents on the current channel. This value
should reflect the range on the current ヤpatchユ of the MIDI expander.
・ For instance, _pitchrange(300) means that pitch modifications will be in the range of
three semitones above and below the average value.
・ Once _pitchrange(x) has been specified on a MIDI channel, subsequent _pitchbend(y)
messages indicate pitch corrections in cents, with y varying between -x and +x.
"_pitchrange(0)" [default value] indicates that subsequent _pitchbend(y) messages
on the current MIDI channels take the actual MIDI value for y (range 0..16383).
### _transpose(x) [Performance control]
Transposes following simple note x semitones higher. (x may also be negative.)
・ Transposition is clipped to acceptable octave values.
### _pitchrate(x) [Current channel] [Performance control]
Sets the rate of continuous change of pitchbend to x samples per second.
### _modrate(x) [Current channel] [Performance control]
Sets the rate of continuous change of modulation to x samples per second.
### _pressrate(x) [Current channel] [Performance control]
Sets the rate of continuous change of channel pressure to x samples per second.
### _volumerate(x) [Current channel] [Performance control]
Sets the rate of continuous change of volume to x samples per second.
### _panrate(x) [Current channel] [Performance control]
Sets the rate of continuous change of panoramic controller to x samples per second.
### _volumecontrol(x) [Current channel] [Performance control]
Informs BP2 that MIDI controller x controls the volume (on the current channel).
・ Default value is 7, in agreement with "General MIDI" specs.
### _pancontrol(x) [Current channel] [Performance control]
informs BP2 that MIDI controller x controls the panoramic (on the current channel).
・ Default value is 10, in agreement with "General MIDI" specs.
### _volume(x) [Performance control]
Controls volume on the current channel (range 0 to 127). The default controller is MIDI
controller #7 and may be changed by _volumecontrol(). Default value is 90 (as per General
MIDI specs).
・ If button "Reset controllers" is checked on the "Settings" dialog, volumes on
all channels are reset to default value once an item has been played.
### _pan(x) [Performance control]
Controls panoramic on the current channel (range 0 to 127). The default controller is
MIDI controller #10 and may be changed by _pancontrol(). Default value is 64.
・ If button "Reset controllers" is checked on the "Settings" dialog, panoramics on
all channels are reset to default value once an item has been played.
### Wait for:
When in RECording script mode, this allows you to enter a script line
"Wait for ヌkey stroke or MIDI eventネ" interactively.
### Execute
Execute the script displayed in the script window, if any.
### Check MIDI
Play a random sequence on the MIDI port to check the output.
### RESET (Keyboard window)
Delete all tokens attached to keys. (See "Use tokens")
### RESET MIDI
Reset the MIDI driver. Use this when MIDI input/output is not working. A good idea also
is to reset your MIDI device (synth, keyboard, etc.) by switching it off and on.
### Expand selection window ヌwindownameネ
You selected text in the current edit window that will be interpreted by BP2 as a
"polymetric expression". The complete (expanded) polymetric expression will be shown
if the syntax is correct and if terminal symbols belong to the current alphabet.
・ This is also a script command.
### Tablesノ
Displays a window allowing the edition of tables used by Csound instruments.
### Play selection in window ヌwindownameネ
If symbols and syntax are correct, the selection in the current edit window will be
played on the MIDI output. You may check "Show graphics" on the "Settings" dialog to
see how "sound-objects" are set in time.
・ This is also a script command.
### Ignore constraints
If checked, then all object properties will be ignored when setting time.
### Ignore constraints OFF [Script command]
Cancels effect of "Ignore constraints ON".
### Ignore constraints ON [Script command]
See "Ignore constraints".
### Write MIDI files
(Not yet implemented) Allow BP2 to create MIDI file containing the items it produces.
### Show messages
Allows BP2 to display messages during "computation".
### Show messages OFF [Script command]
Cancels effect of "Show messages ON".
### Show messages ON [Script command]
See "Show messages".
### Interactive (use input)
When this is checked, BP2 tries to make sense of in-coming MIDI messages. It will display
some of them (message line, bottom of the screen) and may take actions according to
interactive commands defined in window "Interaction" (-in.filename).
### Interactive OFF [Script command]
Cancels the effect of Interactive ON.
### Interactive ON [Script command]
When this is checked, BP2 tries to make sense of in-coming MIDI messages. It will display
some of them (message line, bottom of the screen) and may take actions according to
interactive commands defined in window "Interaction" (-in.filename).
### Reset controllers [Settings dialog]
Resets switches, pitch benders, modulation, channel pressure, panoramic and volume
on all channels once an item has been played. This option is recommended although it may
be time consuming.
・ Note that BP2 keeps track of the channels on which controllers
have been changed, so normal reset will only occur on those channels. (Consequently,
if a controller has been changed by another device than BP2, it may not be reset
properly.) However, general reset is forced when invoking "Produce items" if this
option is checked.
### Reset controllers OFF [Script command]
Cancels "Reset controllers ON".
### Reset controllers ON [Script command]
Resets pitch benders, modulation, channel pressure and volume on all channels
before an item is played. This option is recommended.
### Reset rule weights
Resets weights in grammar to original values before producing a new item.
### Reset rule weights OFF [Script command]
Cancels the effect of "Reset rule weights ON".
### Reset rule weights ON [Script command]
See "Reset rule weights".
### Reset rule flags
Resets "flags" in grammar to ヤzeroユ before producing a new item.
### Reset rule flags OFF [Script command]
Cancels the effect of "Reset rule flags ON".
### Reset rule flags ON [Script command]
See "Reset rule flags".
### Use MIDI in/out
Allows BP2 to play items on the MIDI output.
### Use MIDI OFF [Script command]
Cancels the effect of "Use MIDI ON".
### Use MIDI ON [Script command]
See "Use MIDI in/out".
### Synchronize start
If checked, BP2 will wait for a specific MIDI NoteOn before playing the current item.
・ The synchronize message may be set in the interactive file "-mi.filename".
・ See "IN Start play".
### Synchronize start OFF [Script command]
Cancels the effect of "Synchronize start ON".
### Synchronize start ON [Script command]
See "Synchronize start".
### Compute while playing
Allows BP2 to compute the next item while playing current one. Usually this option
is active. It may be de-activated to save memory space.
### Non-stop improvize
Allows BP2 to produce unlimited number of items with the same grammar.
### Non-stop improvize OFF [Script command]
Cancels the effect of "Non-stop improvize ON".
### Non-stop improvize ON [Script command]
See "Non-stop improvize".
### Cyclic play
Allows the same item to be repeated forever.
### Cyclic play OFF [Script command]
Cancels the effect of "Cyclic play ON".
### Cyclic play ON [Script command]
See "Cyclic play".
### Use each substitution
When SUB subgrammars are used, allows BP2 to play items produced after each substitution.
(See "-gr.koto3" for instance)
### Use each substitution OFF [Script command]
Cancels the effect of "Use each substitution ON".
### Use each substitution ON [Script command]
See "Use each substitution".
### Produce all items
Produces all items generated by grammar.
### Produce all items OFF [Script command]
Cancels the effect of "Produce all items ON".
### Produce all items ON [Script command]
Produces all items generated by grammar.
### Display production
Displays all steps of the "production" in the "Trace" window.
### Step-by-step produce
Displays all steps of the "production" in the "Trace" window, and allows BP2 to pause.
### Step subgrammars
Allows BP2 to pause each time a subgrammar has been used entirely in "production".
### Trace production
Displays all steps of the "production" in the "Trace" window along with decisions
taken while producing an item.
### Choose candidate rule
Allows user to produce items by choosing candidate rules manually.
### Display items
Allows the display of item(s) produced by the grammar. This option should be OFF if
items are very complex.
### Display items OFF [Script command]
Cancels the effect of "Display items ON".
### Display items ON [Script command]
See "Display items".
### Show graphics
Displays items on the graphics window before playing them on the MIDI output.
・ This option should be OFF if items are very complex.
### Show graphics OFF [Script command]
Cancels the effect of "Show graphics ON".
### Show graphics ON [Script command]
See "Show graphics".
### Use time limit
Uses specified time limit, if any, to perform "computations".
### Use time limit OFF [Script command]
Cancels the effect of "Use time limit ON".
### Use time limit ON [Script command]
See "Use time limit".
### Use tokens ON [Script command]
See "Use tokens".
### Use tokens OFF [Script command]
Cancels the effect of "Use tokens ON". (See "Use tokens")
### Computations
Computation comprizes:
・ the "production" of an item by a grammar, or the interpretation
of text selection as a musical item;
・ the expansion of the item as a "polymetric expression"
・ the "time-setting" of the expanded expression.
### Use tokens [toggle]
Instead of typing the characters indicated on the computer's keyboard, "Use tokens"
allows you to type tokens defined in a ヤkeyboardユ file (-kb.filename).
・ To edit, save and load tokens, display the "Keyboard" window.
### Use these tokens (Keyboard window)
See "Use tokens".
### OK
Means that changes done in the current window are valid.
### New seed (Random sequence)
Creates an arbitray new seed that will be used for random generation. This is the
ヤrandomizeユ procedure used by programmers. The new seed will be displayed and may
be reused to produce exactly the same sequence (with exactly the same grammar)
### Use buffer limit OFF
Ignore specified buffer limit: the work string may grow forever.
### Use buffer limit ON
Use the specified value to limitate the length of the work string during "production".
### Rule arrows
<-> --> and <-- are the three derive modes in grammars.
--> means that the rule may be used in "production" only
<-- means that it is to be used in analysis (parsing) only
<-> means that the rule may be used in both modes.
(This is the usual format for "true BP grammars")
### true BP grammars
These grammars can be used both in "production" and in analysis (parsing).
See the reference manual. When compiling a grammar, BP2 checks whether it may be taken
as a true BP grammar.
### GEN type of a Csound parameter
Indicates the Csound generator used with function tables describing variations of this
parameter. GEN07 (linear interpolation) is assumed by default. GEN08 (cubic spline)
is another option.
### General MIDI
An international standard aimed at making it easy to play MIDI files with predictable
results on different synthesizers. Basic specifications are a mapping of
128 typical instruments to 128 program numbers (numbered 1 to 128), and a mapping of
key numbers to typical percussive sounds (to be played on channel 10).
・ In BP2, General MIDI (and customized mappings) is defined as a glossary, namely
"-gl.GeneralMIDI". Information about General MIDI may be obtained from Tom White,
RolandCorp, 7200 Dominion Circle, Los Angeles CA 90040, USA. You may also contact
jeff@millie.loc.gov.
### Reset this object
Deletes the displayed "sound-object prototype" and resets its properties to default.
・ To delete a sound-object prototype permanently, first reset it and save the ヤ-miユ
file of "sound-object prototypes". Then delete it from the "alphabet window".
### Play object alone
Play "sound-object prototype" at specified tempo.
### Play expression:
Play item typed in the <any expression> field.
### MIDI sequence
This "sound-object prototype" is a sequence of MIDI codes.
### Sampled sound
This "sound-object prototype" is a sound file, or part thereof.
### Csound instrument
This "sound-object prototype" is a Csound instrument.
### Copy from ...
Copy part of properties from specified "sound-object prototype".
### Go to ...
Jumps to specified "sound-object prototype".
### Edit/record MIDI stream
Opens dialog for recording and editing MIDI codes for this sound-object prototype.
### (striated time)
Decide to play expression in striated or smooth time. (See "Striated time")
### Show graphics
Decide to play expression with or without graphics.
### Ignore properties
If checked, "sound-object prototype" constraints will be ignored when playing expression.
### with parameters:
If checked, following parameters will be used when playing object.
### Load prototype file
Load a ヤ-miユ "sound-object prototype" file. Note that ヤoldユ files (before 2.5) will
not be loaded unless the corresponding ヤ-hoユ alphabet has been loaded.
### Save prototype file
Saves current "sound-object prototype" file.
### RECORD
Records new MIDI codes for current "sound-object prototype".
### PLAY
Plays current "sound-object prototype" exactly at the tempo it was recorded.
### Play ticks
When checked, metronom ticks will be heard.
### Time ticks OFF
This is a script command.
Switches off metronom ticks.
### Time ticks ON
This is a script command.
Switches on metronom ticks.
### Tick cycle ON
This is a script command.
・ Allows the hearing of metronom ticks, if combined with "Play ticks ON", mixed with
the performance of items.
### Tick cycle OFF
This is a script command.
・ Inhibits metronom ticks when items are performed.
### Reset tick cycle
This is a script command.
・ Resets the cycles of ticks played by the time base during the performance of items.
### Reference period
See "Striated object".
### Striated object: Tref =...
This "sound-object prototype" is declared as ヤstriatedユ, i.e. based on a
metronom setting the period of which is Tref, and may be rescaled accordingly when
performed on a different tempo. For instance, if Tref = 1000ms and metronom value
is mm = 120, this object will be rescaled at 50% its nominal duration.
### Record tick
Select the MIDI key and channel to play ticks.
### Import...
Import MIDI codes for current "sound-object prototype" from a MIDI file.
### Show codes
Display MIDI codes recorded for current "sound-object prototype".
### Adjust duration to...
Adjust the duration of current "sound-object prototype" to the value specified
in milliseconds.
・ Beware of the effects of "pre-roll" and "post-roll". Remember the formula:
Sound-object duration
= date of last event - date of first event - pre-roll + post-roll
・ Both MIDI and Csound events are modified.
・ Related topic: Adjust beats to...
### Adjust beats to...
Adjust the duration of current "sound-object prototype" to the duration specified
in number of beats (using Tref as period).
・ Beware of the effects of "pre-roll" and "post-roll". Remember the formula:
Sound-object duration
= date of last event - date of first event - pre-roll + post-roll
・ Both MIDI and Csound events are modified.
・ Related topic: Adjust duration to...
### Adjust velocities...
Adjust velocities within specified range. Velocities 0 or velocities of NoteOff
messages are unchanged.
### Append AllNotesOff
Append AllNotesOff message after the end of current "sound-object prototype".
・ This is done automatically by many MIDI keyboards.
### Suppress AllNotesOff
Suppress all AllNotesOff messages from the insertion point or the beginning.
### Quantize NoteOn's...
Adjust dates of NoteOn messages to match specified fraction of a beat. This does not
modify NoteOff's. (Use "Expand min. durations" for that)
### Expand min. durations...
Set minimum note durations to specified fraction of beat
### Suppress channel pressure
Suppress all channel pressure (monophonic aftertouch) messages from the insertion point
or the beginning.
### Make monodic
If two notes are overlapping, shorten the first one, and so on until object may be
performed on a single-voice patch.
### Suppress pitchbend
Suppress all pitchbend messages from the insertion point or the beginning.
### Suppress key pressure
Suppress all key pressure (polyphonic aftertouch) messages from the insertion
point or the beginning.
### Insert silence
Create silence of specified duration and insert it at the beginning of the sound-object
prototype or at the insertion point.
・ May be you actually want to set-up a positive "pre-roll"?
・ Related topic: "Append silence"
### Append silence
Create silence of specified duration and append it to the "sound-object prototype".
・ May be you actually want to set-up a negative "post-roll"?
・ Related topic: "Insert silence"
### OK Rescale
This object may be compressed or dilated at will.
・ Related topics: "OK Rescale", "Expand at will", "Compress at will", "Dilation ratio range"
### Never rescale
This object should never be compressed nor dilated.
・ Related topics: "Never rescale", "Expand at will", "Compress at will", "Dilation ratio range"
### Dilation ratio
The ratio by which the duration of a "sound-object prototype" is multiplied at the
moment it is played.
・ Related topics: "OK Rescale", "Never rescale", "Dilation ratio range", "Expand at will",
"Compress at will", "Send dilation ratio to controller"
### Dilation ratio range:
Specify range of "dilation ratio" in which object may be rescaled.
・ Related topics: "OK Rescale", "Never rescale", "Expand at will", "Compress at will"
### Expand at will
This object may be dilated at will, i.e. its "dilation ratio" may become infinite.
・ Related topics: "OK Rescale", "Never rescale", "Dilation ratio range", "Compress at will"
### Compress at will
This object may be compressed at will, i.e. its "dilation ratio" may go down to 0.
・ Related topics: "OK Rescale", "Never rescale", "Dilation ratio range", "Expand at will"
### Send dilation ratio to controller:
Create a MIDI message containing "dilation ratio" and send it to the specified
controller before the first message of the object is sent. Some MIDI devices may
use this information to modify the sound generation process accordingly.
・ If ヤalphaユ is the dilation ratio (alpha = 1 means no change in the timing), then
the value sent in this MIDI message is: 32 * log(alpha) + 64
where ヤlogユ is a decimal logarithm.
・ This controller value is clipped to the range 0..127.
### Beginning
Pivot should be at the beginning of the "sound-object"'s time-span interval.
### Middle
Pivot should be at the end of the "sound-object"'s time-span interval.
### Set pivot
Pivot should be at specified distance from the beginning of the "sound-object"'s
time-span interval.
### First NoteOn
Pivot should be on first NoteOn message.
### Middle NoteOn/Off
Pivot should be in the middle of time-span interval delimited by first NoteOn and
last NoteOff messages.
### Last NoteOff
Pivot should be on last NoteOff message.
### Never relocate
Never relocate this "sound-object".
・ Related topic: "Relocate at will"
### Relocate at will
Relocate this "sound-object" at will.
・ Related topic: "Never relocate"
### Allow delay
Relocate this "sound-object" with delay less than specified value (in ms or fraction
of duration).
### Allow forward
Relocate this "sound-object" with forward displacement less than specified value
(in milliseconds or fraction of duration).
### Never cover
Never cover beginning (resp. end) of "sound-object".
・ Related topic: "Cover at will"
### Cover at will
Beginning (resp. end) of "sound-object" may be covered by other objects.
・ Related topic: "Never cover"
### Not more than
Beginning (resp. end) of object may be covered by other objects within specified
limit (in milliseconds or fraction of duration).
### Never truncate
Never truncate beginning (resp. end) of object.
・ Related topic: "Truncate at will"
### Truncate at will
Beginning (resp. end) of object may be truncated at will.
・ Related topic: "Never truncate"
### Never break after this object
If checked, does not allow ヤorganumユ on this object.
・ Related topic: "Break at will"
### Break at will
If checked, allows ヤorganumユ on this object.
・ Related topic: "Never break after this object"
### Don't force
Do not force continuity in the beginning (resp. the end) with a neighbouring object.
・ Related topics: "Force", "Allow gap"
### Force
Force continuity in the beginning (resp. the end) with a neighbouring object.
・ Related topics: "Don't force", "Allow gap"
### Allow gap
Allow break of continuity in the beginning (resp. the end) with a neighbouring object
up to specified value (in milliseconds or fraction of duration).
・ Related topics: "Don't force", "Force"
### Force to current channel
Force all channel messages of this object to the channel set by context [ _chan(x) ].
### Do not change channels
Never change channels of this object even if context [ _chan(x) ] demands it.
### Force to channel:
Force all channel messages of this object to specified channel.
### Accept transposition
If unchecked, object will ignore all _transpose(x) controls.
### Accept articulation changes
If unchecked, object will ignore all _legato(x) and _staccato(x) controls.
### Accept volume changes
If unchecked, object will ignore all _volume(x) controls.
### Accept panoramic changes
If unchecked, object will ignore all _pan(x) controls.
### Enter and find
Enters text selection and looks for it in current window.
### Tempo markers
These are numbers preceded with slashes explicitly indicating the ヤspeedユ of a sequence
of sound-objects, i.e. the number of sound objects performed in one tick of
the metronom. In the beginning of a musical item, other numbers may indicate meter
sections. See "Section headers".
### mm = <metronom value>
This indicates the number of ticks per minute in the "Time base".
### Transpose input notes:
If checked, and if non zero value is specified, then all notes entered from the MIDI
keyboard are transposed accordingly. For instance, if the transposition value is
-3 semitones, the C5 key will be transcribed as A4.
### INIT: <initialisation line>
Use this line on top of a grammar to define a process that should be activated (ONCE)
before improvizing. A typical example is the setting of a ヤpatchユ on the synthesizer.
・ The initialisation line itself is a single script instruction. There are two cases:
1) A "Play ヌany itemネ" instruction is executed when the first item has been produced and is
ready to be performed; thus there is no delay between initialisation and the
beginning of the performance.
2) Any other instruction is executed before producing the first item. This allows a
sufficient delay, for instance in the case of a patch change.
### Performance controls
To display the list of currently implemented performance controls, select
"Pick performance control" in the "Edit" menu.
・ Each control is documented on-line. These controls are used for
adding expressiveness to the performance (e.g. _legato, _volume, etc.) or changing
MIDI parameters (e.g. _pitchbend) that are not mapped to specific "sound-objects".
・ Related topic: "Continuous performance control"
### Apple Events
These are used to handle communication between several applications running under
MacOS on the same, or several interconnected machines.
BP2 responds to local and remote Apple Events. Remote events are
sent by other machines on a local AppleShare network.
You must make sure that the link between applications is activated in the ヤsharing setupユ
control pannel on both the client and the server machines. In addition, you must
set the sharing of BP2.5.2, the server application, to allow links.
A test client application named "TryAppleEvents.fm" running under FileMaker Pro is
supplied. Beware that FileMaker Pro 2.1 does not send events to remote machines.
In addition, scripts commands like "AE send" and "AE wait" make it possible to send
(local) Apple Events or wait for events sent by other applications.
BP2 handles the following Apple Events:
・ The four core Apple Events of class 'aevt':
Open application (ID 'oapp');
Open document (ID 'odoc');
Print document (ID 'pdoc');
Quit application (ID 'quit');
・ Events of class 'Bel0', with no parameter, controlling BP2:
ID 'beep' beeps BP2 (usefull for tests);
ID 'impr' tells BP2 to improvize with the current grammar;
ID 'dosc' tells BP2 to run the current script;
ID 'quit' aborts current process;
ID 'paus' interrupts the current process;
ID 'cont' resumes the current process;
ID 'fast' tells the inference engine and the interpreter that an item shall be
played as soon as possible;
ID 'more' tells the inference engine and the interpreter that the current item
shall be played again;
ID 'skip' tells the interpreter that the item being produced shall not be played.
・ Events of class 'Bel0' sending a 'TEXT' parameter and expecting BP2 to do something with it:
ID 'scri' loads the text as a BP2 script;
ID 'gram' loads the text as a BP2 grammar;
ID 'alph' loads the text as a BP2 alphabet;
ID 'glos' loads the text as a BP2 glossary;
ID 'inte' loads the text as a BP2 interactive file;
ID 'data' loads the text as a BP2 data file;
ID 'csin' loads the text as a BP2 "Csound instrument file";
ID 'name' reads each line in text and tries to assign it to one of the current
BP2 files (grammar,alphabet,data,glossary,interaction,time base,
keyboard,sound-object prototypes,settings,script). Names may be separated by
spaces or returns. Each name should start with a valid BP2 prefix.
ID 'play' interprets the text as a musical item in BP2 syntax;
ID 'scln' interprets the text as a single BP2 script line, with the
advantage of not writing in the Script window;
ID 'sett' loads the settings file specified in the text;
ID 'conv' sets "note convention" to specified option: English, French,Indian or Keys.
(These keywords are NOT case-sensitive.)
・ Related topics:
"Interactive mode"
"AE send fast"
"AE send normal"
"AE wait"
### AE send fast class 'ヌAEclassネ' ID 'ヌAEIDネ' to application 'ヌsignatureネ'
See "AE send normal". The difference lies in the high priority of the event. Use this
version if the AE is needed for synchronisation.
### AE send normal class 'ヌAEclassネ' ID 'ヌAEIDネ' to application 'ヌsignatureネ'
This script command sends an "Apple Event" with normal priority to an application
running on the same machine. (Remote Apple Events can be received, not sent,
by this version.)
・ For high priority, use "AE send fast".
・ ヌAEclassネ is the class of the Apple Event. For instance, most events processed by BP2
have class 'Bel0'.
・ ヌAEIDネ is the identification of the event in that class. See the documentation about the
target application. See "Apple Events" for a complete documentation of events
processed by BP2.
・ ヌsignatureネ is the signature (creator) of the target application. If not documented,
it can be found by opening the application with ResEdit and selecting "Get Info..."
in the "File" menu. The signature of BP2 is also 'Bel0'.
### AE wait class 'ヌAEclassネ' ID 'ヌAEIDネ'
This script command forces BP2 to wait for an Apple Event. (Clicking the mouse also
aborts the process.)
・ ヌAEclassネ is the class of the Apple Event. For instance, most events processed by BP2
have class 'Bel0'.
・ ヌAEIDネ is the identification of the event in that class. See the documentation about the
target application. See "Apple Events" for a complete documentation of events
processed by BP2.
・ Related topics:
"AE send fast"
"AE send normal"
### Time resolution:
The accuracy of the MIDI driver. Typically 10ms.
### Quantization:
Expected accuracy of the positions of "sound-objects". This may be set to the maximum
auditive tolerance on the perception of durations. 50ms is a good idea.
・ A large quantization requires less memory space and computation time.
### beat(s) [max 40]
The number of beats of this tick cycle.
### beats
A "beat" of a sound-object is the time interval defined by its "Reference period".
### vel
Abbreviation for velocity.
### ms
Abbreviation for milliseconds.
### Speed ratio:
Each cycle of ticks may run at a speed different from the time base.
### MUTE
When checked, prevents tick cycle from being heard.
### _rest
See "Undetermined rests"
### Reset session time
Resets a clock counting seconds during BP2's operation. See "Tell session time".
### Tell session time
Tells the time elapsed since BP2 was started, or since "Reset session time" was last called.
・ Related topic: "Reset session time".
・ This is also a script command.
### TryAppleEvents.fm
A very comprehensive introduction of BP2 in a client-server envoronment will be found in the
enclosed data-base "TryAppleEvents.fm" that may be opened under Claris FileMaker Pro.
・ Related topics: "Apple Events".
### Set weights
Sets all rule weights in the grammar to a specified value.
### Learn weights
If the grammar is a "true BP grammar", it is possible to derive rule weights from a set of
examples, i.e. a set of musical items that could have been produced by the grammar.
・ The result is a grammar that produces musical items very close to the ones used for the
learning process.
・ Before learning weights it is advised to save the current ones. See "Save weights".
・ Load the examples to the "Data" window and select them, then click "Learn weights".
・ The weight of each rule will be incremented by the number of times it has been used during the
parsing of the sample set.
・ At the end of parsing the option is given to add infered weights to current weights, or replace
current weights with infered weights. The first option is used when several sample sets are
needed for learning weights. The second option prompts confirmations: "Keep infered weights
in current grammar?" and "Update grammar with new weights?".
・ Related topics:
"Load weights"
"Set weights"
"Save weights"
### Show weights
Displays the grammar with the current values of its rule weights. This is useful when the production
of items changes rule weights.
### Load weights
Changes weights in a grammar according to values previously saved in a ヤ-wgユ file. In many cases
a warning is issued saying that the grammar has been modified since its weights were saved,
because the weight file keeps a record of compilation time. Be careful not to load weights
obtained in a grammar with a different arrrangement of rules, otherwise BP2 may crashノ
・ Related topics:
"Save weights"
"Set weights"
"Learn weights"
### Save weights
Saves the weights of rules in the current grammar to a ヤ-wgユ weight file.
・ Related topics:
"Load weights"
"Set weights"
"Learn weights"
### Load decisions
When producing items step by step in the "Choose candidate rule" mode, it is possible to load
decisions taken previously from a decision file.
・ Related topic: "Save decisions"
### Save decisions
When producing items step by step in the "Choose candidate rule" mode, it is possible to save
the decisions taken so far to a decision file.
・ Related topic: "Load decisions"
### Check variables
If a grammar is loaded and compiled, it lists the variables found by the compiler and
indicates:
・ unreachable variables (that can't be generated by the grammar)
・ undefined variables (that can't be rewritten by any rule in the grammar)
### Pre-roll
Delay between the first event (MIDI message or Csound event) of a "sound-object" and the
beginning of its time-span interval.
・ Pre-roll is null by default.
・ A negative pre-roll amounts to a silence inserted before the first event of the
sound-object. This silence may for instance be ヤprotectedユ thanks to property "Never cover".
・ A positive pre-roll allows some events to fall before the on-setting time
(beginning) of the sound-object. This may be useful if the sound-object contains an
initialisation sequence that should not be part of its time-span interval.
・ A positive pre-roll is also the proper way of compensating a mechanical delay in the
device producing the sound-object. If for instance the event sequence in the sound-object
starts with a NoteOn and the device takes 100ms to react, then setting the pre-roll
to 100ms will displace all MIDI messages by 100ms to the past, so that their effects
coincide with the desired timings. Generally you will also set up a positive "post-roll"
to compensate the delay in setting off events.
・ Remember the formula:
Sound-object duration
= date of last event - date of first event - pre-roll + post-roll
・ Related topics: "Post-roll", "Insert silence"
### Post-roll
Delay between the last event of a "sound-object" and the end of its time-span interval.
・ Post-roll is null by default.
・ A negative post-roll allows some events to fall beyond the off-setting time (end) of a
sound-object. This may be useful if the sound-object contains a final sequence of events
that should not be part of its time-span interval.
・ A positive post-roll amounts to a silence appended after the last event of the
sound-object. This silence may for instance be ヤprotectedユ thanks to property "Never cover".
・ A positive post-roll is also the proper way of compensating a mechanical delay in setting-off
the device producing the sound-object. If for instance the event sequence in the sound-object
ends with a NoteOff and the device takes 50ms to react, then setting the post-roll
to 50ms will append a 50ms silence after the sound-object to allow the device to finish its
job. This is generally combined with a positive "pre-roll" compensating on-setting delays.
・ Remember the formula:
Sound-object duration
= date of last event - date of first event - pre-roll + post-roll
・ Related topics: "Pre-roll", "Append silence"
### Cyclic sound-objects
Any sound-object may contain a periodical part starting at an arbitrary point of its
time-span interval (see "Periodical after").
・ BP2 handles two typical cases:
1) The sequence of events in the periodical part must be sent again
to the sound device when that part is repeated. This happens for instance
with sound-objects produced by a MIDI synthesizer.
2) Cyclic properties are defined but there is no need to repeat the sequence in
the periodical part. This happens for instance with sound-objects produced
by a MIDI sampler: the sampler expects BP2 to trigger the sample with a
NoteOn and it takes care of repetitions until a NoteOff is received.
In ヤ-mi.abc1ユ, for instance, ヤcycle1ユ illustrates case 1 and ヤcycle2ユ case 2.
・ Property "Discard NoteOff's except in last period" is useful with objects in case 2.
It prevents the sample from setting off as soon as the first cycle is completed.
This property is generally combined with "Don't strike again NoteOn's".
・ Property "Force integer number of periods" modifies durations making sure that the
last repetition of the cyclic part is complete.
・ It is a good idea to place the object's pivot at the beginning of the periodical
part. See "Set pivot".
・ If a cyclic sound-object has a negative "post-roll", events falling beyond its off-setting
time are ignored.
・ Beware when setting the startpoint of the periodical part: the balance between
NoteOn's and NoteOff's should be equal in the periodical part.
BP2 compensates some balance problems by avoiding two successive NoteOn's on the
same key and channel (see "Strike NoteOn's according to default") and appending
extra NoteOff's after the item when necessary, but an improper balance may result
in unwanted auditive results.
・ Related topics: "OK Rescale", "Never rescale", "Dilation ratio range",
"Expand at will", "Compress at will", "Periodical after"
### Periodical after
If this option is checked then the sound-object contains a periodical part starting
at a defined point of its time-span interval. The value (in milliseconds or
as a percentage of the duration) is the duration of the initial non-cyclic part.
・ If the sound-object does not have the "Expand at will" property it makes no difference
to specify the initial non-cyclic part in milliseconds or as a percentage of the
duration.
・ The last events of a cyclic object may be discarded if its "post-roll" is set to a
negative value.
・ Related topic: "Cyclic sound-objects".
### No period
This sound-object has no periodical part. This is a default setting.
・ Related topic: "Cyclic sound-objects".
### Force integer number of periods
This property fixes acceptable durations so that the last repetition of the periodical
part is complete.
・ The property is only needed for sound-objects that do not have the "Expand at will"
property, or that have specified limits for the "Dilation ratio range". However, it
does not harm to set it with resizable sound-objects.
・ Related topic: "Cyclic sound-objects".
### Discard NoteOff's except in last period
This property is used with cyclic sound-objects, notably the ones representing samples
on a MIDI sampler. When the object (or part of it) is repeated, then the NoteOff
encountered at the end of the first cycle may set off the sample, so that the sample
won't be heard during the following cycles.
・ If the property is checked, any NoteOff will be discarded unless it appears in the
last cycle.
・ With this property it is recommended to check "Don't strike again NoteOn's", so that
no unwanted NoteOff's are produced when NoteOn's are found in the repeated cycle.
・ Related topic: "Cyclic sound-objects".
### Strike again NoteOn's
If a NoteOn must be sent while the same key of the same channel is already active
(because a NoteOn has already been sent) then BP2 will first send a NoteOff to
deactivate the key.
This is the default mode in BP2 (see "Strike NoteOn's according to default").
・ Some MIDI sound devices may hang if two successive NoteOn's are sent to the same
key and the same channel. BP2 keeps track of key on/off status to make sure this
never happens.
・ Related topic: "Don't strike again NoteOn's"
### Don't strike again NoteOn's
If a NoteOn must be sent while the same key of the same channel is already active
(because a NoteOn has already been sent) then BP2 will ignore it.
・ This is not BP2's default mode: see "Strike NoteOn's according to default"
・ Related topics: "Strike again NoteOn's", "Discard NoteOff's except in last period"
### Strike NoteOn's according to default
If a NoteOn must be sent while the same key of the same channel is already active
(because a NoteOn has already been sent) then BP2 will behave as per its default
setting.
・ BP2's default setting is the behaviour defined as "Strike again NoteOn's".
・ Related topic: "Don't strike again NoteOn's"
### % of duration
The specified value is a percentage of the sound-object's duration, so the actual
value will vary according to its "dilation ratio".
### Captureノ
・ If a "sound-object prototype" is being displayed:
Copies MIDI codes of this "sound-object prototype" to a MIDI stream
that may later be pasted to another (or the same) prototype.
・ If the "Time base" dialog is being displayed:
Capture the current tick cycle and paste it later to a "sound-object prototype".
・ Related topic: "Paste MIDI stream"
### Capture selection asノ
Takes the text selection in the current edit window, tries to interpret it as a musical
item, using the current alphabet of "terminal symbols", plays it to the MIDI
output and capture the MIDI codes so a MIDI stream that may later be pasted to
a "sound-object prototype".
・ Related topic: "Paste MIDI stream"
### Paste MIDI stream
Takes the currently captured MIDI stream (see "Capture selection asノ" and "Captureノ")
and pastes it to the currently displayed "sound-object prototype.
There are several options:
・ Option "Delete and replace"
erases the MIDI sequence of the sound-object prototype and replaces it with the
MIDI stream.
・ Option "Insert at insert point"
inserts the MIDI stream at the insert point marked by a vertical red line on the
sound-object prototype.
・ Option "Replace from insert point"
replaces part of the MIDI sequence of the sound-object prototype, starting at the
insert point marked by a vertical red line, with the MIDI stream.
・ Option "Merge from insert point"
merges MIDI messages in the MIDI stream with the ones contained in the sound-object
prototype, starting at the insert point marked by a vertical red line.
・ Option "Insert before"
inserts the MIDI stream before the MIDI sequence of the sound-object prototype.
・ Option "Append"
appends the MIDI stream after the MIDI sequence of the sound-object prototype.
### Write Csound scores
Allows writing musical items as Csound scores.
・ Related topic: "Csound implementation"
### Csound implementation
・ Csound is a 100% software environment for the design and transformation of digitized
sounds. It runs on different platforms, notably under Unix and MacOS.
・ To retrieve Csound, connect to ftp://cecelia.media.mit.edu/pub/Csound/
・ BP2 produces Csound scores in the same way it produces MIDI files or real-time MIDI:
the Csound option may be selected in the "Output" menu and is saved with the options
of the current project or data.
・ Once the option has been selected you may produce a Csound score for each musical item
produced by a grammar or played from its text representation (a BP2 "score"). Items
may be played on real-time MIDI, saved to Csound scores, to MIDI files, or any
combination of these.
・ If the musical item contains simple notes or sound-objects defined as streams of MIDI
messages, BP2 converts the stream to a sequence of Csound events, using the
specifications of Csound instruments defined in a "Csound instrument file". This file
can be created and edited in the "Csound instruments" dialog accessible from the
"Output" menu. Csound instrument specifications should contain data that is
consistent with the "orchestra" file that will be invoked by Csound when compiling
the score produced by BP2.
・ If no "Csound instrument file" is loaded, BP2 uses a default instrument which has only
the start/end timing arguments and accepts pitch in the "octave point pitch-class"
representation. It is more clever to design a Cound orchestra with instruments
accepting parameters like pitchbend, pressure, modulation etc., which BP2 handles
in a smart way, using a "vector" representation of continuous parameter changes.
・ Sound-object protoypes may also contain Csound scores. In this case, BP2 creates a
score of the musical item arranging these individual scores after changing their
timings and arguments according to the musical item and specifications of Csound
instruments. BP2 may therefore produce Csound scores using only Csound events and
Csound instrument specifications as an input, thereby bypassing current limitations
of MIDI.
・ The mapping between Csound argument values (the ones found in the Csound score) and
MIDI / BP2 ranges is defined automatically once the user has supplied three typical
pairs of values. BP2 performs linear or quadratic interpolation, plus logarithmic
mapping if requested to do so.
・ In addition, BP2 handles "Performance parameters" with arbitrary names the values
of which may be taken as arguments by Csound instruments.
### Pitch argument:
Put here the index of the argument controlling pitch in this Csound instrument.
### Check orchestra file
This feature not yet implemented. A future version of BP2 will check the consistency
of information contained in this dialog with the one contained in the Csound
orchestra file it describes.
### Copy fromノ
Copy instrument specifications from another instrument.
### log
If checked, it means that the 3 values shown on the left are on a logarithmic scale.
・ If ヤlogユ is checked on both lines of the mapping, it has no effect.
### Assign as default to channel:
If a number in range 1..16 is indicated here, it means that the corresponding MIDI
channel is assigned by default to this Csound instrument.
・ This feature facilitates the mapping to Csound of musical items that contain
MIDI channel information instead of Csound instrument assignments.
### Number of arguments:
This box contains the maximum number of arguments used by this Csound instrument.
・ Csound arguments that are not explicitly mapped to MIDI or BP2 parameters are
written as zero values.
### octave point pitch-class
In this representation, pitch is represented as a decimal number in which the integer
part is the octave number and the decimal part is the pitch class.
・ For example, the following mapping is used:
C4 = 8.00 D4 = 8.02 E4 = 8.04 F4 = 8.05 G4 = 8.07
A4 = 8.09 B4 = 8.11
### octave point decimal
In this representation, pitch is represented as a decimal number in which the integer
part is the octave number and the decimal part is the fraction of the octave.
・ For example, the following mapping is used:
C4 = 8.00 D4 = 8.17 E4 = 8.33 F4 = 8.42 G4 = 8.58
A4 = 8.75 B4 = 8.92
### cps (Hz)
In this representation, pitch is represented in cycles per second (Hertz).
・ For example, the following mapping is used:
C5 = 523.25 D5 = 587.33 E5 = 659.26 F5 = 698.46 G5 = 783.99
A5 = 880.00 B5 = 987.77
・ These values depend on the settings of the diapason in the "Tuning dialog".
### Pitchbend arguments:
Boxes contain the indexes of arguments sending pitchbend information to this
Csound instrument.
・ The left box is the argument containing the pitchbend value at the start date of
any event related to this instrument.
・ The middle box (optional) is the argument containing the pitchbend value at the clip
date of any event related to this instrument.
・ The rightmost box (optional) is the argument which may refer to a function table
for continuous variations.
・ If this instrument does not use pitchbend leave boxes empty.
### Pitchbender range (cents) +/-
This box contains the range (in cents) of the pitchbend used in MIDI format, which
may have been specified in the data or grammar with "_pitchrange(x)".
・ This information may be needed by BP2 for a correct remapping of pitchbend values
from MIDI to Csound.
### Volume arguments:
Boxes contain the indexes of arguments sending volume information to this
Csound instrument.
・ The left box is the argument containing the volume value at the start date of
any event related to this instrument.
・ The middle box (optional) is the argument containing the volume value at the clip
date of any event related to this instrument.
・ The rightmost box (optional) is the argument which may refer to a function table
for continuous variations.
・ If this instrument does not use volume leave boxes empty.
### Pressure arguments:
Boxes contain the indexes of arguments sending channel pressure information to this
Csound instrument.
・ The left box is the argument containing the pressure value at the start date of
any event related to this instrument.
・ The middle box (optional) is the argument containing the pressure value at the clip
date of any event related to this instrument.
・ The rightmost box (optional) is the argument which may refer to a function table
for continuous variations.
・ If this instrument does not use pressure leave boxes empty.
### Modulation arguments:
Boxes contain the indexes of arguments sending modulation information to this
Csound instrument.
・ The left box is the argument containing the modulation value at the start date of
any event related to this instrument.
・ The middle box (optional) is the argument containing the modulation value at the clip
date of any event related to this instrument.
・ The rightmost box (optional) is the argument which may refer to a function table
for continuous variations.
・ If this instrument does not use modulation leave boxes empty.
### Panoramic arguments:
Boxes contain the indexes of arguments sending panoramic information to this
Csound instrument.
・ The left box is the argument containing the panoramic value at the start date of
any event related to this instrument.
・ The middle box (optional) is the argument containing the panoramic value at the clip
date of any event related to this instrument.
・ The rightmost box (optional) is the argument which may refer to a function table
for continuous variations.
・ If this instrument does not use panoramic leave boxes empty.
### Attack velocity argument:
This box contains the index of the argument of this Csound instrument which should
contain the NoteOn velocity information.
・ Leave the box empty if this instrument does not need the information.
### Release velocity argument:
This box contains the index of the argument of this Csound instrument which should
contain the NoteOff velocity information.
・ Leave the box empty if this instrument does not need the information.
### Dilation ratio argument:
This box contains the index of the argument of this Csound instrument which should
contain the "dilation ratio" information.
・ Leave the box empty if this instrument does not need the information.
### Csound instruments
This dialog contains a description of arguments used by an instrument defined in a
Csound orchestra file.
・ Type command-? and click any button or static text to get the information.
・ Clicking the "MOREノ" button displays a few additional arguments that can be mapped to
arbitrary "Performance parameters".
・ Related topic: "Csound implementation", "Csound instrument file".
### Parameter name
This field is accessed by clicking "MOREノ" in the "Csound instruments" dialog.
The name of this parameter should match the one of a "Performance parameter" used in
the data or grammar, otherwise the argument(s) listed under this name will
always remain 0.
・ Related topics: "_step", "_cont", "_value", "Performance parameter".
### Start argument
This is the index of the argument used in a Csound event to pass on the value of this
parameter, or the initial value in case it varies continuously.
(See "Continuous performance control")
・ Related topics: "Parameter name", "End argument", "Table argument"
### End argument
This is the index of the argument used in a Csound event to pass on the final value of
this parameter in case it varies continuously.
(See "Continuous performance control")
・ The box may remain empty if the parameter never varies continuously or the Csound
instrument is not designed for continuous variation of this parameter.
・ Related topics: "Parameter name", "Start argument", "Table argument"
### Table argument
This is the index of the argument used in a Csound event to pass on the index of
a function table when the parameter varies continuously.
(See "Continuous performance control")
・ The box may remain empty if the parameter never varies continuously or the Csound
instrument is not designed for continuous variation of this parameter.
・ Related topics: "Parameter name", "Start argument", "End argument"
### Argument boxes
・ The left box contains the index of the Csound instrument argument taking the initial
value of this control.
・ The middle box is only used for "continuous performance control". It contains the
index of the argument taking the final value of this control.
・ The rightmost box contains the index of the argument taking the reference of the
function table that BP2 creates for defining complex parameter variations.
(See "Continuous performance control")
### Continuous performance control
・ A few MIDI parameters such as pitchbend, modulation, volume, channel pressure and
panoramic may be controlled continuously at a given sampling rate. For example,
a portamento may be produced by the following BP2 score:
_pitchcont _pitchrate(20) _pitchbend(6000) A4 B4 _pitchbend(9000)
in which BP2 will insert 20 pitchbend messages per second.
・ Similarly, arbitrary parameters may be handled with effect only on the Csound
output. (See "Performance parameter"). For instance,
_cont(blurb) _value(blurb,154.2) A4 B4 _value(blurb,-21) C4
・ The default sampling rate is 50 messages per second.
・ Csound events do not allow the insertion of real-time messages. Therefore it is
necessary to supply the start and end values of the argument which will be
interpolated by the procedure associated with the Csound instrument. For instance,
let the start value of pitchbend be sent as argument 5 and the end value as
argument 6. The score produced by BP2 using the preceding item reads:
i1 0 1 8.09 6000 7500
i1 1 1 8.11 7500 9000
("8.09" and "8.11" are the respective pitch values of A4 and B4.)
・ Another option with Csound is to allow BP2 to create function tables to control
the values. An argument of the instrument should be reserved to passing on the
table reference.
・ Related topic: "Step performance control"
### Step performance control
・ By default, all MIDI controls are modified only when explicit values are assigned
to them by the BP2 score. For instance, the following score assigns different
modulation values to notes B4, C5 and D5:
_modstep A4 _mod(2000) B4 C5 _mod(9000) D5
Replacing "_modstep" (which is optional here) with "_modcont" would
cause continuous changes of modulation at the rate of 50 messages per second.
・ In this example it is advisable to check "Reset controllers" since the final value
(9000) is not the same as the initial one (0).
・ Related topic: "Continuous performance control"
### Store all items to same file
If checked, all musical items are stored to the same MIDI or Csound score file.
### Change name
Click this button to close the current MIDI or Csound score file and create a new one.
### MIDI file format
BP2 supports three MIDI file formats: types 0, 1 and 2. Here are tips for choosing
an output format:
・ If the file will contain a single musical item, or a sequence of items produced by a
grammar in the "Improvize" mode, any format is OK. Keep in mind, however, that
format 2 may be rejected by single-track MIDI programs.
・ In the current version, BP2 saves each item to a single track. Types 0 and 1 may
therefore be considered equivalent.
・ If the file will contain several independent musical items (each of which might
have a different tempo or time signature), then type 2 must be used.
・ BP2 imports files type 0, 1 or 2. With format 1 it superimposes the tracks even if
they have different time signatures. With format 2, however, an error message
will be displayed if the file contains several items.
### Prompt for changing file name
If checked, a new MIDI or Csound score file may be optionaly created for each
musical item.
### Save each item to a new file
If checked, a new MIDI or Csound score file is created for each musical item.
### Write item immediately
If checked, musical items are immediately written as MIDI files and/or Csound scores.
### Write item after playing on MIDI
If checked, musical items are first played on MIDI and then optionaly written as
MIDI files and/or Csound scores.
### Trace time setting
If checked, displays details of time setting calculations in the "Trace" window.
### Trace Csound
If checked, displays Csound scores in the "Trace" window.
### Convert to Csound
Creates a Csound score attached to this "sound-object prototype" on the basis of events
contained in its MIDI stream.
・ Beware that the result depends on the "Csound instruments" defined in the currently
loaded ヤ-csユ "Csound instrument file". If some MIDI controls have no
mapping to Csound arguments they will simply be ignored.
・ If no "Csound instruments" file has been loaded, a default, minimum instrument
description is used.
・ Related topic: "Csound instrument file"
### Import MIDI file
Reads a MIDI file (type 0, 1, 2) and uses its content as a MIDI stream for this
sound-object prototype.
### Change instrument file
Define or change a ヤ-csユ "Csound instrument file" attached to these "sound-object prototypes".
### Csound instrument file
・ This file contains a description of "Csound instruments" used to convert sound-objects
to Csound scores, or to produce Csound scores from musical items containing
"sound-objects" and/or "simple notes".
・ The file is accessed in the "Csound instruments" dialog of the "Output" menu.
・ This description must be consistent with the Csound orchestra file used to
play items produced by BP2. This consistency is not checked by the present
version.
・ "Sound-object prototypes" may contain a Csound score that must relate to these
Csound instruments.
### MOREノ
See "Csound instruments" dialog.
### New file
Creates a new file for storing the information of this window.
### Period (cyclic object) / strike mode
Displays the dialog for setting these parameters.
・ Related topics:
"Cyclic sound-objects"
"Strike again NoteOn's"
"Don't strike again NoteOn's"
### Continuity / pre-postroll
Displays the dialog for setting these parameters.
・ Related topics:
"Don't force", "Force", "Allow gap"
"Post-roll", "Pre-roll"
### Cover / truncate / break tempo
Displays the dialog for setting these parameters.
・ Related topics:
"Cover at will", "Never cover"
"Truncate at will", "Never truncate"
"Break at will", "Never break after this object"
### Duration / pivot / location
Opens dialog for changing these properties.
・ Related topics:
"OK Rescale", "Expand at will", "Compress at will", "Dilation ratio range"
"Set pivot", "Beginning", "Middle"
"Never relocate", "Relocate at will"
### Channel / instrument
Opens dialog for changing these properties.
### Csound file format
Csound scores are text files saved under either Mac, DOS or Unix format.
・ In Mac format, lines terminate with ASCII 13 (return)
・ In DOS format, lines terminate with ASCII 13 (return) and ASCII 10 (line feed)
・ In Unix format, lines terminate with ASCII 10 (line feed)
### ADDval
If checked, values of this parameter are combined additively.
・ The formula is the following:
If 'p0' is the parameter value found in the Csound score of a "sound-object", and 'x'
the assigned value, the parameter value in the resulting score will be:
p1 = p0 + x - default
('default' is specified in the field "Default value".)
・ Related topics: "MULTval", "Default value"
### MULTval
If checked, values of this parameter are combined multiplicatively.
・ The formula is the following:
If 'p0' is the parameter value found in the Csound score of a "sound-object", and 'x'
the assigned value, the parameter value in the resulting score will be:
p1 = p0 * (x / default)
('default' is specified in the field "Default value".)
・ Related topics: "ADDval", "Default value"
### Default value
The default value of this Csound parameter. It is used when "sound-objects" contain
incomplete Csound score lines, and in the combination of parameters (see related
topics).
・ Related topics: "MULTval", "ADDval"
### MIDI filter
Displays the MIDI filter dialog.
・ Related topics: "RECEIVE", "TRANSMIT"
### RECEIVE... [MIDI filter]
Items checked in this list indicate the types of MIDI messages that BP2 should receive.
・ Related topic: "TRANSMIT"
### TRANSMIT... [MIDI filter]
Items checked in this list indicate the types of MIDI messages that BP2 should transmit.
・ Every transmitted message must have been received. Therefore the 'receive' box is
also checked.
・ Related topic: "RECEIVE"
### END OF BP2 help